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

Printed on: April 16, 2024 at 08:04 o'clock

Mitglied: 122990
Solution 122990 Nov 09, 2015 updated at 09:12:44 (UTC)
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
Member: Bommi1961
Bommi1961 Nov 09, 2015 at 09:28:05 (UTC)
Goto Top
Danke für die Info!
Mitglied: 114757
Solution 114757 Nov 09, 2015 updated at 09:42:56 (UTC)
Goto Top
start-process psexec.exe -ArgumentList '\\SERVERNAME -s -f -c \\SERVERNAME\c$\TEMP\programm.EXE programm.exe' -Wait -NoNewWindow  
Gruß jodel32
Member: Bommi1961
Bommi1961 Nov 10, 2015 at 06:45:27 (UTC)
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
Solution 114757 Nov 10, 2015, updated at Jan 29, 2016 at 08:05:35 (UTC)
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.