bommi1961
Goto Top

Frage zu Powershell

Hallo zusammen!

Ich muss ein PS Skript erstellen mit dem ich eine EXE auf einem anderen PC aufführen kann und diese dann ein Programm installiert.
Ich versuche das so....

Start-Process psexec.exe -Computername $SYSNR -verb "-s -f -c \\SERVERNAME\c$\TEMP\Programm.EXE"

Bekommen aber nur Fehlermeldungen, mit denen ich nicht viel anfangen kann.

Ich hab's auch schon mit vorher kopieren versucht um dann das Programm von c: auf zurufen hat aber leider an nicht geklappt.

Vielen Dank schon mal für die Hilfe.

Viele Grüße

Bommi

Content-Key: 287894

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

Ausgedruckt am: 18.04.2024 um 09:04 Uhr

Mitglied: 122990
Lösung 122990 09.11.2015 aktualisiert um 10:12:44 Uhr
Goto Top
Moin,
Start-Process psexec.exe -Computername $SYSNR -verb "-s -f -c \\SERVERNAME\c$\TEMP\Programm.EXE"
Das kann so nie und nimmer gehen, erstens weil du die Befehls-Parameter dem Befehl als Verb mitgibst und nicht als -Argumentlist. Zweitens muss der ausführende Account Zugriffsrechte auf den UNC Pfad haben, mitgabe von Username und Password also evt. erforderlich wenn der Computeraccount keine ZUgriffsrechte auf das Share hat. Drittens muss man PSEXEC nicht auf dem REMOTE-System ausführen sondern kann dies lokal tun und das Remote-System als ersten Parameter übergeben. Und 4tens das wichtigste start-process kennt überhaupt keinen Parameter -Computername; hier wäre also erst mal Doku lesen angesagt ...

Ganz ohne Zusatztools Per WMI einen Task auf einem Remote-System ausführen:
([wmiclass]'\\SERVERNAME\root\cimv2:Win32_Process').Create('C:\setup.exe')
Gruß grexit
Mitglied: Bommi1961
Bommi1961 09.11.2015 um 10:28:05 Uhr
Goto Top
Danke für die Info!
Mitglied: 114757
Lösung 114757 09.11.2015 aktualisiert um 10:42:56 Uhr
Goto Top
start-process psexec.exe -ArgumentList '\\SERVERNAME -s -f -c \\SERVERNAME\c$\TEMP\programm.EXE programm.exe' -Wait -NoNewWindow  
Gruß jodel32
Mitglied: Bommi1961
Bommi1961 10.11.2015 um 07:45:27 Uhr
Goto Top
Vielen Dank, das hat mir schon mal sehr geholfen. Aber wenn ich \\SERVERNAME durch $SYSNR ersetzte, wird der Wert nicht übernommen.
$SYSNR bekommt natürlich vorher einen Wert eingegeben.
Mitglied: 114757
Lösung 114757 10.11.2015, aktualisiert am 29.01.2016 um 09:05:35 Uhr
Goto Top
Vielen Dank, das hat mir schon mal sehr geholfen. Aber wenn ich \\SERVERNAME durch $SYSNR ersetzte, wird der Wert nicht übernommen.
Grund: Der String ist in 'einfachen' Hochkommas eingefasst, und darin werden keine Variablen aufgelöst, wohingegen bei normalen Anführungszeichen das Gegenteil der Fall ist und noch weitere Escapes möglich sind! Powershell Grundlagen...
start-process psexec.exe -ArgumentList "\\$SYSNR -s -f -c \\SERVERNAME\c$\TEMP\programm.EXE programm.exe" -Wait -NoNewWindow  
Aber bitte beachte wenn du Strings in doppelten Anführungszeichen einschliesst, dass alles andere was mit einem Dollarzeichen beginnt als PS-Variable interpretiert wird. Das c$ ist hier eine Ausnahme weil der anschließende Backslash kein gültiges Zeichen einer Variablen ist.