stoppen oder starten Sie einen Dienst auf remote-Maschine
Erstellte ich ein Skript starten oder stoppen Sie einen Dienst basierend auf der display-Namen. Mein script funktioniert auf dem lokalen Rechner, aber ich möchte sicherstellen, dass es getan werden kann, auf einem remote-Computer und dem lokalen Computer. Ich bin nicht sicher, wie Sie Sie, um es arbeiten auf einem remote-Rechner.
jede mögliche Hilfe würde geschätzt.
$serviceName = Read-Host -Prompt 'Please enter service name: '
# Check that service name exists
If (Get-Service $serviceName -ErrorAction SilentlyContinue)
{
# Check that service name is not empty
if([string]::IsNullOrEmpty($serviceName))
{
Write-Host "Service name is NULL or EMPTY"
}
else
{
$Choice = Read-Host -Prompt 'Would you like to start or stop the service'
#Start service
If ($Choice -eq 'start') {
Start-Service -displayname $serviceName
Write-Host $serviceName "Starting..." -ForegroundColor Green
}
#Stop service
If ($Choice -eq 'stop') {
Stop-Service -displayname $serviceName
Write-Host $serviceName "Stopping..." -ForegroundColor Green
}
}
}
else {
Write-Host "Service name does not exist"
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, dass Sie nicht deaktiviert haben PowerShell-remoting verwendet, der einfachste Weg dies zu tun ist, wickeln Sie es in eine Funktion mit
ComputerName
als ein optionaler parameter, und verwenden Sie dannInvoke-Command
und splatPSBoundParameters
.Dann können Sie anrufen
Toggle-Service
ohne parameter, um es lokal, oder den Namen von einem remote-server, um die Aktionen auszuführen, die auf diesem server.Können Sie nicht verwenden
Start-Service
/Stop-Service
für einen remote-computer, Sie können jedoch pass ein service-Objekt ausGet-Service
(mit derComputerName
parameter) zuSet-Service
die führen die gleiche start - /Stopp-Aktionen für einen remote-computer:Ich finde, dass dies viel einfacher als mit PowerShell-Remoting oder der WMI-Befehle.
Können Sie einfach aktualisieren Sie Ihren code mit minimalen änderungen im code:
Start-Service
undStop-Service
arbeiten Sie nicht gegen remote-Computer. Sie müssen entweder PowerShell-remoting, oder verwenden Sie WMI. In meinem Umfeld, PowerShell-remoting ist standardmäßig blockiert, aber wir verwenden Sie WMI, statt; service abgerufenen Objekte durchGet-WMIObject
haben eine Methode namensStart-Service()
die aufgerufen werden können, auf die abgerufenen service-Objekt:Stoppen Sie einen Dienst auf einem remote-computer mithilfe von WMI auf die gleiche Weise funktioniert; rufen Sie das service-Objekt ist
StopService()
Methode statt.Ich empfehle Ihnen, Lesen Sie die Informationen in
Get-Help Get-WMIObject
und die MSDN Referenz auf die Klasse Win32_Service.ETA: Es sollte beachtet werden, dass durch das weglassen der
-ComputerName
parameter, WMI funktioniert auf dem lokalen computer als auch.Start-Service
undStop-Service
gegen einen remote-computer, die Sie gerade haben, um einen service-Objekt, um Sie vonGet-Service
-ComputerName
parameterGet-WMIObject
.