Systemer Geschrieben 27. Februar 2023 Teilen Geschrieben 27. Februar 2023 Servus Zusammen, ich hab bereits einige Skripte geschrieben, die meisten jedoch immer lokal auf den Geräten bzw. über die Aufgabenplanung ausgeführt..... Jetzt hätte ich ein Skript, welches an mehreren Computern ausgeführt werden muss. Fall 1: ich möchte über Invoke-command an einem Remote Rechner was ausführen $DK = New-PSSession (read-host) Invoke-Command -Session $DK {Start-Process "C:\temp\eSetup-1209.exe"} dabei sollte er mir das Installationsfenster am Remote Rechner öffnen, dies macht er leider jedoch nicht...... wisst ihr wie es funktioniert, dass er am Remote Rechner das Setup in einem Fenster öffnet? Fall 2: ich möchte in einem Skript mehrere Server ansprechen. Nacheinander, mit unterschiedlichen Aufgaben. Ich habe es mit der PS-Session versucht, jedoch funktioniert diese nicht so ganz wie sie soll..... Auf Server 45 soll bsp powershell gestartet werden und Excel geschlossen, sobald dies abgeschlossen ist soll er auf Server 44 Powershell eine andere Datei starten.... beispielsweise ca. folgend: Enter-PSSession Server45 start-process powershell "C:\temp\PS122.ps1" stop-service -name excel Remove-PSSession (exit) Enter-PSSession Server44 start-process powershell "C:\temp\NEU.ps1" Remove-PSSession (exit) Habt Ihr hierzu Ideen bzw. Lösungen? Vielen Dank! Besten Gruß Systemer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
euro Geschrieben 27. Februar 2023 Teilen Geschrieben 27. Februar 2023 Moin! Ich bin Unixer, daher sind Angaben mit Vorsicht zu genießen 🙂 zu Fall 1) ich hab' mal etwas ähnliches unter Windows versucht und musste dann feststellen, dass das ohne signierte Scripte nicht funktioniert. Dann habe ich aufgegeben und es einem Kollegen aufgedrückt 🙂 zu Fall 2) das riecht ja nach einem Script, welches nach und nach abgearbeitet wird. Zur Not musst du etwas basteln, dass, bevor der Teil mit dem Server44 beginnt, beim Server45 angefragt wird, ob er fertig ist mit seinem Job ... gegenenfalls mit 'ner kleinen Endlosschleife (mit Notausstieg nach 5 min), die das einfach abfragt und erst danach mit Server44 weitermacht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mylurid Geschrieben 2. März 2023 Teilen Geschrieben 2. März 2023 Fall 1) geht nicht. Du kannst remote Commands ausführen, aber eine GUI bekommst du dann nicht zurückgemeldet. Probiere die Installation mit einer .msi Datei. Das sollte funktionieren. Fall 2) Test deine Scripte erstmal lokal.. wenn es lokal klappt, dann sollte es auch remote kein Problem sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Systemer Geschrieben 6. März 2023 Autor Teilen Geschrieben 6. März 2023 Am 2.3.2023 um 16:42 schrieb mylurid: Fall 1) geht nicht. Du kannst remote Commands ausführen, aber eine GUI bekommst du dann nicht zurückgemeldet. Probiere die Installation mit einer .msi Datei. Das sollte funktionieren. Fall 2) Test deine Scripte erstmal lokal.. wenn es lokal klappt, dann sollte es auch remote kein Problem sein. Hi, danke dir für deine Antwort. Funktioniert lokal, das Problem ist, dass er nicht richtig aus der Session rauskommt und versucht über die "alte" Session eine weitere aufzubauen, was eben nicht funktioniert. Problem ist hier, dass ich wsl die Commands für die Session falsch nutze... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 6. März 2023 Teilen Geschrieben 6. März 2023 1.) mit invoke command gestartete prozesse bekommen keine GUI. Invoke Command macht eine neue Usersitzung auf der Remote maschine auf und diese wird eben ohne GUI gestartet. 2.) wie mylurid schreibt. da du einen start process machst musst du zwischen server 45 und 44 prüfen ob der prozess auch fertig ist. oder du startest den prozess mit -wait und fängst dann hinterher den ExitCode ab und schaust ob der prozess fehlerfrei gelaufen ist. z.b. so: # ExitCode is available when using -Wait... Write-Host "Starting Notepad with -Wait - return code will be available" $process = (Start-Process -FilePath "notepad.exe" -PassThru -Wait) Write-Host "Process finished with return code: " $process.ExitCode Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.