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-Key: 364511

Url: https://administrator.de/contentid/364511

Printed on: April 25, 2024 at 19:04 o'clock

Mitglied: 135333
135333 Feb 12, 2018 updated at 15:51:05 (UTC)
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
Member: ChrisIO
ChrisIO Feb 15, 2018 at 11:07:34 (UTC)
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
Mitglied: 135333
135333 Feb 15, 2018 at 11:11:13 (UTC)
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.
Member: ChrisIO
ChrisIO Feb 15, 2018 at 12:10:58 (UTC)
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
Mitglied: 135333
135333 Feb 15, 2018 updated at 12:17:47 (UTC)
Goto Top
Nope, ich hatte doch gesagt alles was ich oben gepostet habe kommt in den Remote-Scriptblock !!
Member: ChrisIO
ChrisIO Feb 15, 2018 at 12:56:31 (UTC)
Goto Top
Was genau meinst Du mit Remote-Scriptblock?
Mitglied: 135333
Solution 135333 Feb 15, 2018 at 15:20:43 (UTC)
Goto Top
Na den hier
invoke-command {*****HIER****} -Force -Credential $cred -computer Server1