chrisio
Goto Top

Powershellscript - Dienst beenden, auf Prozess warten Invoke-Command

Hallo,

ich bastle gerade an einem Veeam Powershell Script.
Ziel ist es, 2 Dienste anzuhalten und auf die Beendigung von Prozessen zu warten bevor das Script beendet wird.
Das Script funktioniert bei lokaler Ausführung auch wunderbar nur Remote habe ich da wohl noch Fehler drin.

Asnp VeeamPSSnapin
$User = "domäne\administrator"  
$PasswordFile = "E:\Scripts\Bla_Scripts\AESpassword.txt"  
$KeyFile = "E:\Scripts\Bla_Scripts\AES.key"  
$key = Get-Content $KeyFile
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)
$nid1 = (Get-Process prozess1).id
$nid2 = (Get-Process prozess2).id
$nid3 = (Get-Process prozess3).id
invoke-command {stop-service "Dienst1"} -Credential $cred -computer Server1  
Wait-Process -Id $nid1
Wait-Process -Id $nid2
Wait-Process -Id $nid3
invoke-command {stop-service "Dienst2"} -Credential $cred -computer Server1  

Wäre super wenn mir jemand helfen könnte.

Gruß,
Christoph

Content-ID: 364511

Url: https://administrator.de/forum/powershellscript-dienst-beenden-auf-prozess-warten-invoke-command-364511.html

Ausgedruckt am: 25.12.2024 um 16:12 Uhr

135333
135333 12.02.2018 aktualisiert um 16:51:05 Uhr
Goto Top
Stop-Service wartet per Default darauf das der Dienst beendet ist wenn du kein -NoWait verwendest aber den -Force Parameter benutzt.

Ansonsten im Remote Scriptblock noch eine zusätzliche Prüfung einsetzen
Stop-Service "DienstXY" -Force  
while ((Get-Service "DienstXY").Status -ne 'Stopped'){sleep 1}  

Gruß Snap
ChrisIO
ChrisIO 15.02.2018 um 12:07:34 Uhr
Goto Top
Zitat von @135333:

Stop-Service wartet per Default darauf das der Dienst beendet ist wenn du kein -NoWait verwendest aber den -Force Parameter benutzt.

Ansonsten im Remote Scriptblock noch eine zusätzliche Prüfung einsetzen
> Stop-Service "DienstXY" -Force  
> while ((Get-Service "DienstXY").Status -ne 'Stopped'){sleep 1}  
> 

Gruß Snap


Hey,

danke für deine Antwort.
Wenn ich den Befehl dann für remote umstelle sollte er in etwa so aussehen?

invoke-command {stop-service "Dienst1"} -Force -Credential $cred -computer Server1   
while (invoke-command (Get-Service "Dienst1").Status -ne 'Stopped'){sleep 1}  

Gruß,
Christoph
135333
135333 15.02.2018 um 12:11:13 Uhr
Goto Top
Nein das kommt alles in den Remote-Scriptblock. Invoke-Command wartet ja so lange bis die Ausführung auf dem Remotesystem beendet ist.
ChrisIO
ChrisIO 15.02.2018 um 13:10:58 Uhr
Goto Top
Hey,

also dann eher so:

invoke-command {stop-service "Dienst1"} -Force -Credential $cred -computer Server1    
while ((Get-Service "Dienst1").Status -ne 'Stopped'){sleep 1}  

Gruß,
Christoph
135333
135333 15.02.2018 aktualisiert um 13:17:47 Uhr
Goto Top
Nope, ich hatte doch gesagt alles was ich oben gepostet habe kommt in den Remote-Scriptblock !!
ChrisIO
ChrisIO 15.02.2018 um 13:56:31 Uhr
Goto Top
Was genau meinst Du mit Remote-Scriptblock?
135333
Lösung 135333 15.02.2018 um 16:20:43 Uhr
Goto Top
Na den hier
invoke-command {*****HIER****} -Force -Credential $cred -computer Server1