Benutzer mit den meisten Antworten
Powershell script schneller durchlaufen lassen.

Frage
-
Hallo
ich habe ein powershell script, welches mir alle Dienste die mit "Heinz" beginnen und nicht deaktiviert sind, nacheinander startet
Get-Service | Where-Object {$_.displayName.StartsWith("Heinz")} | Start-Service
Gibt es eine möglichkeit diesen Befehl so umzubauen, das die dienste gleichzeitig bzw. mehere auf einmal gestartet werden.
Aktuell läuft das Script ja alphabetisch alle Dienste durch die so heißen, startet den ersten, wartet auf rückmeldung und dann erst wird der 2 gestartet(und so weiter)- Bearbeitet Steven86 Freitag, 6. Februar 2015 13:57
Antworten
-
Hallo Steven!
beschäftige dich mit den Job Cmdlets aus der PowerShell ;-)
Ich habe darüber ein Youtube Video über Windows PowerShell Jobs gemacht!Get-Service -Name "S*" | ForEach-Object { Start-Job -ScriptBlock { $Args[0] | Start-Service -WhatIf } -ArgumentList $_ }
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Bearbeitet Peter Kriegel Montag, 9. Februar 2015 06:32
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 12. Februar 2015 15:38
-
Wenn es noch mehr auf Performance ankommt, ist Split-Pipeline zu empfehlen: https://github.com/nightroman/SplitPipeline
$start = Get-Date $jobs = Get-Service -Name "a*" | ForEach-Object { Start-Job -ScriptBlock { $Args[0] | Start-Service -WhatIf } -ArgumentList $_ } $result = $jobs | Receive-Job $end = Get-Date "Runtime using jobs: $($end - $start)" $start = Get-Date $result = Get-Service -Name "a*" | Split-Pipeline { process { $_ | Start-Service -WhatIf } } $end = Get-Date "Runtime using Split-Pipeline: $($end - $start)"
Runtime using jobs: 00:00:02.2343607
Runtime using Split-Pipeline: 00:00:00.7500054
-Raimund
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 12. Februar 2015 15:39
Alle Antworten
-
Hallo Steven!
beschäftige dich mit den Job Cmdlets aus der PowerShell ;-)
Ich habe darüber ein Youtube Video über Windows PowerShell Jobs gemacht!Get-Service -Name "S*" | ForEach-Object { Start-Job -ScriptBlock { $Args[0] | Start-Service -WhatIf } -ArgumentList $_ }
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Bearbeitet Peter Kriegel Montag, 9. Februar 2015 06:32
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 12. Februar 2015 15:38
-
Danke für den Hinweis. Ich habe den Link korrigiert.
http://www.admin-source.de/BlogDeu/1034/powershell-jobs-basis-tutorial-teil-12
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Bearbeitet Peter Kriegel Montag, 9. Februar 2015 06:33
-
Wenn es noch mehr auf Performance ankommt, ist Split-Pipeline zu empfehlen: https://github.com/nightroman/SplitPipeline
$start = Get-Date $jobs = Get-Service -Name "a*" | ForEach-Object { Start-Job -ScriptBlock { $Args[0] | Start-Service -WhatIf } -ArgumentList $_ } $result = $jobs | Receive-Job $end = Get-Date "Runtime using jobs: $($end - $start)" $start = Get-Date $result = Get-Service -Name "a*" | Split-Pipeline { process { $_ | Start-Service -WhatIf } } $end = Get-Date "Runtime using Split-Pipeline: $($end - $start)"
Runtime using jobs: 00:00:02.2343607
Runtime using Split-Pipeline: 00:00:00.7500054
-Raimund
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 12. Februar 2015 15:39