Wie startet und stoppt man einen Windows-Dienst aus der Ferne mit PSEXEC? Vorzugsweise die Syntax zu schreiben Ich habe versucht, das Cmdlet unten angegeben
psexec \\Server -u Administrator -p Somepassword ServiceName
Wie startet und stoppt man einen Windows-Dienst aus der Ferne mit PSEXEC? Vorzugsweise die Syntax zu schreiben Ich habe versucht, das Cmdlet unten angegeben
psexec \\Server -u Administrator -p Somepassword ServiceName
PSService auf SysInternals ist speziell für die Fernsteuerung von Diensten gedacht::`
psservice [\\computer [-u username] [-p password]] <command> <options>
wo:
Abfrage Zeigt den Status eines Dienstes an.
Konfiguration Zeigt die Konfiguration eines Dienstes an.
setconfig Legt den Starttyp (deaktiviert, automatisch, Bedarf) eines Dienstes fest.
Start Startet einen Dienst.
stoppen Stoppt einen Dienst.
Neustart Stoppt einen Dienst und startet ihn dann neu.
Pause Pausiert einen Dienst
Fortsetzung Setzt einen pausierten Dienst fort.
abhängen Listet die Dienste auf, die von dem angegebenen Dienst abhängig sind.
Sicherheit Gibt den Sicherheitsdeskriptor des Dienstes aus.
finden. Durchsucht das Netz nach dem angegebenen Dienst.
\\computer Zielt auf das angegebene NT/Win2K-System ab.
Fügen Sie den Schalter -u mit einem Benutzernamen und einem Kennwort ein, um sich am entfernten System anzumelden, wenn Ihre Sicherheitsdaten es Ihnen nicht erlauben, Leistungsindikatoren vom entfernten System abzurufen. Wenn Sie die Option -u, aber kein Passwort mit der Option -p angeben, wird PsService Sie zur Eingabe des Passworts auffordern und es nicht auf dem Bildschirm ausgeben.
Eine weitere Alternative zu psexec ist sc. Sie können sc verwenden, um Dienste aus der Ferne zu starten oder zu beenden:
sc \\server start ServiceName
sc \\server stop ServiceName
Es gibt keine "Login"-Informationen, also müssen Sie vielleicht Folgendes ausführen
net use \\server password /USER:user
bevor Sie den Befehl sc ausführen.
Ein Vorteil gegenüber psexec ist, dass auf dem entfernten Rechner kein Konsolenfenster angezeigt wird.
Verwendung von PSEXEC
Mit der folgenden Batch-Datei können Sie Dienste auf mehreren entfernten Rechnern anhalten und starten. Erstellen Sie die Datei Computers.txt in demselben Verzeichnis, in dem die Batch-Datei ausgeführt wird, und führen Sie die Hostnamen der PCs einzeln pro Zeile auf.
@echo off
TITLE Manage Services v1.0
SET suffix=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%
SET /P username=Enter your admin username:
set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
:service
SET /P servicename=Enter service name:
:begin
echo ========================================
echo 1) Start
echo 2) Stop
echo 3) Choose another service
echo ========================================
ECHO.
set /p op=Select an option:
if "%op%"=="1" SET action=start
if "%op%"=="2" SET action=stop
if "%op%"=="3" goto service
psexec "\\@%~dp0Computers.txt" -u %username% -p %password% -h net %action% %servicename% >>%suffix%.log 2>&1
pause
cls
goto begin
PowerShell verwenden
# Point the script to the text file with remote computers
$RemoteComputers = Get-Content "$PSScriptRoot\Computers.txt"
# sets service name
$Service = "uvnc_service"
# Counter for progress bar
$counter = 0
ForEach ($Computer in $RemoteComputers) {
$counter++
Try
{
Write-Progress -Activity 'Processing computers' -CurrentOperation $Computer -PercentComplete (($counter / $RemoteComputers.count) * 100)
Start-Sleep -Milliseconds 200
Get-Service -Name $Service -ComputerName $Computer | Restart-Service -Force -ErrorAction Stop
Write-Output "$(Get-Date -format "yyyy-MM-dd hh:mm:ss"),$computer" | out-file -append -filepath "$PSScriptRoot\success.log"
}
Catch
{
Write-Output "$(Get-Date -format "yyyy-MM-dd hh:mm:ss"),$computer" | out-file -append -filepath "$PSScriptRoot\failed.log"
}
}
Bezug nehmend auf Microsoft Eine Alternative ist die Verwendung von psservice die Teil von pstools unter folgendem Link heruntergeladen werden:
PsTools herunterladen (2.7 MB)
Wenn jemand benötigt
Starten, stoppen, neu starten, etc... eines Windows-Dienstes aus der Ferne
wie in der offiziellen Referenz von Microsoft erwähnt, den entsprechenden Befehl unter Verwendung der mitgelieferten ausführbaren Datei
PsService.exe
könnte in etwa wie folgt aussehen (Fall 1 und Fall 2), wenn Sie Windows PowerShell
Fall 1: Der Benutzer, der den gewünschten Befehl (z. B. Neustart) nach der Anmeldung ausführt, ist ein entfernter Computerbenutzer mit entsprechenden Rechten
. \PsService.exe \\Remote -Computername-OR-ServerName -u Ferncomputername-oder-Servername \Remote -ComputerBenutzer' -p Remote-Computer-Benutzer-Passwort' Neustart Dienstname
Fall 2: Der Benutzer, der nach der Anmeldung den gewünschten Befehl (z. B. Neustart) ausführt, ist der Superuser der Domäne (z. B. DomainAdministrator)
. \PsService.exe \\Remote -Computername-OR-ServerName -u 'DomainKurzname \DomainAdministrator ' -p 'DomainAdministrator-Passwort' restart Dienstname
PS: Beachten Sie, dass in diesem Fall die Parameterwerte in einfachen Anführungszeichen für
Nutzername
-u
und Passwort
-p
für komplexes Passwort und/oder Benutzernamen
Das war's, Ihr Befehl sollte reibungslos ausgeführt werden, haben Sie nur etwas Geduld!
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
1 Stimmen
Wäre es nicht besser, dies auf serverfault.com zu tun?