Benutzer mit den meisten Antworten
PS Script aus einem PS Script starten aber nicht auf beenden warten

Frage
-
Hallo,
ich habe ein Script (Script A) das div. Dinge auf einem Client überprüft. Jetzt möchte ich gerne aus dem Script B das Script A starten und den Computernamen aus der Liste übergeben.
Script A unterstützt das Starten mit übergeben eines Computernamen.
Grundsätzlich funktioniert das, allerdings immer ein Rechner nach dem anderen. Ich würde aber gerne die überrüfungen mehr oder weniger parallel laufen lassen.
Wie erreiche ich es das das externe PS Script gestartet wird und das die Schleife sofort das Script mit einem weiteren Computer startet?
$ErrorActionPreference = "silentlycontinue" $FileImport = "support.txt" $ReportFile = "Support_Report.log" $ReportFile_Offline = "Support_Report_Offline.log" $Date = get-date -Format 'dd.MM.yyyy HH:mm' $Time = Get-Time $file = Get-Content $FileImport if ((Test-Path -path $FileImport) -ne $True) { Write-Host "Import Datei nicht gefunden!!!" -foregroundcolor red Exit} foreach ($computername in $file){ $PingStatus = Gwmi Win32_PingStatus -Filter "Address = '$computername'" | Select-Object StatusCode If ($PingStatus.StatusCode -eq 0) { Write-Host $computername "ist online." -f green & powershell.exe "support.ps1" $computername } else { Write-Host $computername "ist offline." -f DarkRed } }
IT Berater
Antworten
-
Um Dinge in der PowerShell parallel laufen zu lassen gibt es die PowerShell Jobs.
Diese Starten neue hintergrundprozesse für dich:
Get-help about_jobs
http://www.colorconsole.de/PS_Windows/de/about_jobs.htm
Get-Help about_job_details
http://www.colorconsole.de/PS_Windows/de/about_job_details.htmAlternativ kannst du auch Start-Process benutzen:
http://www.colorconsole.de/PS_Windows/de/Start-Process.htm
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Freitag, 25. Oktober 2013 14:04
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 5. November 2013 13:00
Alle Antworten
-
Hallo,
du kannst das Zeichen & durch Start-Process ersetzen, dann wird nicht gewartet, sondern er oeffnet pro Client ein neues Fenster, es werden dann Clients parallel bearbeitet.
Ich wuerde dies aber so nicht machen, denn jeder neu PS-Task verbraucht Systemleistung, ich denke mal je nach Menge der Clients kann Du so dein System zum stehen bringen. Im Prinzip langt auch ein Script um dein Anliegen zu erledeigen.Auch die Fehlerbehandlung in deinem Script ist nicht so optimal, du setzt das System z.B.: auf silentlycontinue damit diese Zeile keinen Fehler wirft wenn die Datei nicht vorhanden ist $file = Get-Content $FileImport und in der Zeile danach pruefst du dann ob die Datei vorhanden ist ...
Beste Gruesse
brima
- Bearbeitet brima Freitag, 25. Oktober 2013 14:10
-
Um Dinge in der PowerShell parallel laufen zu lassen gibt es die PowerShell Jobs.
Diese Starten neue hintergrundprozesse für dich:
Get-help about_jobs
http://www.colorconsole.de/PS_Windows/de/about_jobs.htm
Get-Help about_job_details
http://www.colorconsole.de/PS_Windows/de/about_job_details.htmAlternativ kannst du auch Start-Process benutzen:
http://www.colorconsole.de/PS_Windows/de/Start-Process.htm
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Freitag, 25. Oktober 2013 14:04
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 5. November 2013 13:00