Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Dienste über BAT/CMD Datei (neu)starten
- Ersteller Enis S
- Erstellt am
Knalltuete
Lieutenant
- Registriert
- Aug. 2006
- Beiträge
- 524
Zum Ausführen der .ps1 Datei: Rechtsklick > Mit PowerShell ausführen
areiland
Admiral
- Registriert
- Apr. 2010
- Beiträge
- 8.223
Führe zunächst die Befehlszeile: gwmi win32_service |select Displayname, Name | ogv aus. Der stellt Dir sämtliche Dienste mit ihrem Anzeigenamen und dem zu verwendenden Dienstnamen in einem Windows Fenster dar, das eine Filtermöglichkeit besitzt:
Darüber findest Du also problemlos dann den Dienstnamen, so wie er im Script verwendet werden muss. Und das "Force" muss als "-force" abgetrennt mit einem Leerzeichen an die Befehlszeile angehängt werden.
Die Zeile muss dann also so aussehen:
Dann funktioniert es auch.
Darüber findest Du also problemlos dann den Dienstnamen, so wie er im Script verwendet werden muss. Und das "Force" muss als "-force" abgetrennt mit einem Leerzeichen an die Befehlszeile angehängt werden.
Die Zeile muss dann also so aussehen:
Dann funktioniert es auch.
Knalltuete
Lieutenant
- Registriert
- Aug. 2006
- Beiträge
- 524
Ja, ohne Admin-Rechte kannst du keine System-Dienste beenden.Enis S schrieb:Powershell öffnet sich kurz. Steht nix drinnen und schließt sich direkt. Eventuell irgendwie Admin Rechte geben?
LasseSamenström
Lieutenant
- Registriert
- Mai 2016
- Beiträge
- 833
Gar nicht, Powershell bzw Powershell ise mit admin starten, zum Pfad mit Skript wechseln und ausführen. Lediglich über die Aufgabenverwaltung kannst du das Skript mit Adminrechten starten lassen.
https://www.tech-faq.net/powershell-skript-per-aufgabenplanung-ausfuehren/
https://www.tech-faq.net/powershell-skript-per-aufgabenplanung-ausfuehren/
Knalltuete
Lieutenant
- Registriert
- Aug. 2006
- Beiträge
- 524
Anfordern kannst du die Rechte nicht. Entweder du startest vorab eine PowerShell Konsole mit Admin-Rechten und führst darin das Skript aus oder du schaust mal unter https://it-stack.de/29/09/2017/powershell-skripte-als-administrator-ausfuehren/, wie man ein PowerShell-Skript über das Kontextmenü mit Admin-Rechten starten kann.
sikarr
Vice Admiral
- Registriert
- Mai 2010
- Beiträge
- 6.578
Das Script prüft ob es als Admininstrator läuft, wenn nicht startet es sich mit Adminrechten neu. Ausprobiert habe ich das nicht aber ich könnte mir vorstellen das die UAC dann aufpopt, alles andere wäre sehr beängstigend.
Quelle
PowerShell:
$identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$princ = New-Object System.Security.Principal.WindowsPrincipal($identity)
if(!$princ.IsInRole( `
[System.Security.Principal.WindowsBuiltInRole]::Administrator))
{
$powershell = [System.Diagnostics.Process]::GetCurrentProcess()
$psi = New-Object System.Diagnostics.ProcessStartInfo $powerShell.Path
$script = $MyInvocation.MyCommand.Path
$prm = $script
foreach($a in $args) {
$prm += ' ' + $a
}
$psi.Arguments = $prm
$psi.Verb = "runas"
[System.Diagnostics.Process]::Start($psi) | Out-Null
return;
}
areiland
Admiral
- Registriert
- Apr. 2010
- Beiträge
- 8.223
@sikarr
Hab ich schon so gemacht, funtioniert und die UAC poppt auch auf. Was man eben auch machen kann, ist, dass man ein solches Script in die Aufgabenplanung packt, es mit höchsten Privilegien ausführen lässt und dann nur diese Aufgabe per Verknüpfung ausführt. Dann nämlich poppt keine UAC mehr auf.
Hab ich schon so gemacht, funtioniert und die UAC poppt auch auf. Was man eben auch machen kann, ist, dass man ein solches Script in die Aufgabenplanung packt, es mit höchsten Privilegien ausführen lässt und dann nur diese Aufgabe per Verknüpfung ausführt. Dann nämlich poppt keine UAC mehr auf.
Rego
Commander
- Registriert
- Aug. 2004
- Beiträge
- 2.959
@h00bi ich würde auf alle Fälle vorher eine Prüfung machen
das geht ja auch mit der Powershell sehr schnell
die Skripte weiter oben sind viel zu kompliziert....
Hier ein Beispiel mit der Druckerwarteschlange
das geht ja auch mit der Powershell sehr schnell
die Skripte weiter oben sind viel zu kompliziert....
Hier ein Beispiel mit der Druckerwarteschlange
PowerShell:
$service = get-Service -Name Spooler
if ( $service.Status -ne "Running" ){
Start-Service $service
}
sikarr
Vice Admiral
- Registriert
- Mai 2010
- Beiträge
- 6.578
Kommt drauf an was du erreichen willst, sollte der Dienst schon laufen passiert gar nix. Willst du verhindern das du den Dienst mehrfach startest oder sicherstellen das er schon läuft dann macht das durchaus Sinn.h00bi schrieb:Macht es Sinn vorher abzufragen ob der Dienst läuft, wenn man mit start-service arbeitet?
Kommt immer drauf an was man erreichen will.Rego schrieb:die Skripte weiter oben sind viel zu kompliziert....
N
NotNerdNotDau
Gast
Das ist sinnvoll, wenn man das Skript nur für sich selbst ausführen möchte. Stellt man Skripte auch anderen Usern zur Verfügung und bindet es auf diese Weise ein, weiß der User nicht, was Sache ist, wenn er nicht über die nötigen Rechte verfügt und somit die Ausführung versagt wird.areiland schrieb:dass man ein solches Script in die Aufgabenplanung packt, es mit höchsten Privilegien ausführen lässt und dann nur diese Aufgabe per Verknüpfung ausführt. Dann nämlich poppt keine UAC mehr auf.
Wäre es nicht besser, wenn man als ersten Schritt prüft, ob der Benutzer Angehöriger der Benutzergruppe der Administratoren ist?sikarr schrieb:Das Script prüft ob es als Admininstrator läuft,
In all meinen Skripten, in denen höhere Rechte gefordert sind, steht das Nachfolgende immer ganz oben:
PowerShell:
$ShowWindowAsync = Add-Type -MemberDefinition @'
[DllImport("user32.dll")]
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
'@ -Name 'Win32ShowWindowAsync' -Namespace Win32Functions –PassThru
Get-Process | Where-Object -FilterScript {$_.ProcessName -Eq "powershell" -And $_.Id -Ne $PID} | Stop-Process -PassThru
$SspSID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544')
$SspGRP = $SspSID.Translate([System.Security.Principal.NTAccount])
$SspADM = ($SspGRP.Value).Split('\')[1]
If ($SspADM -Eq "Administratoren")
{
If (-NOT([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
$RunAsArgs = "& '" + $MyInvocation.MyCommand.Definition + "'"
[Void]$ShowWindowAsync::ShowWindowAsync((Start-Process PowerShell -Verb RunAs -ArgumentList $RunAsArgs).MainWindowHandle, 0)
Break
}
Else
{
[Void]$ShowWindowAsync::ShowWindowAsync((Get-Process –Id $PID).MainWindowHandle, 0)
$ErrorActionPreference = "SilentlyContinue"
}
}
Else
{
$OUTPUT = [System.Windows.Forms.MessageBox]::Show("Diese Anwendung kann nur von Administratoren,`ndie im System über die entsprechenden Rechte`nverfügen, ausgeführt werden!`n`nWenden Sie sich ggf. an Ihren System-Administrator!","Keine Berechtigung!","OK","Error")
If ($OUTPUT -Eq "OK")
{
Exit -1
}
}
[Void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[Void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
If($MyInvocation.MyCommand.CommandType -Eq "ExternalScript")
{$ScriptPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition}
Else{$ScriptPath = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0])}
$ErrorActionPreference = "SilentlyContinue"
1. Das PS-Konsolenfenster wird unterdrückt.
2. Es wird geprüft, ob PS bereits geöffnet ist und wenn ja, wird es geschlossen.
3. Prüft, ob der Benutzer der Benutzergruppe der Administratoren angehörig ist.
Anm.: Wer andere Sprachversionen als die deutsche von Windows nutzt, muss den Begriff "Administratoren" entsprechend der vorhandenen Sprache anpassen. (z.B. Englisch = "Administratores")
4. Falls nein, wird der Benutzer darüber informiert, warum das Skript nicht ausgeführt werden kann.
5. Falls ja, wird das Skript mit UAC-Abfrage ausgeführt.
6. Die Form wird, bei Verwendung einer solchen, geladen.
7. Das Verzeichnis des aktuell ausgeführten Skriptes wird definiert. ($ScriptPath)
8. Unsinnige Fehlermeldungen und Hinweise werden unterdrückt.
Zuletzt bearbeitet von einem Moderator:
Ähnliche Themen
- Antworten
- 33
- Aufrufe
- 4.223