script PowerShell girano su PC remoto
-
21-09-2019 - |
Domanda
Ho installato PS 1.0 in un PC remoto (RPC001). Ho usato Windows Sysinternals strumento psexec.exe per eseguire la seguente procedura sul telecomando:
PSExec \\RPC001 -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2
Posso vedere il processo PowerShell.exe in esecuzione sul PC remoto dopo, ma in realtà è non fare nulla, appena appeso lì. Ho provato a mettere un semplice codice di "Write-Output / Host" una stringa nello script. Corro lo stesso script sul telecomando da RTS, funziona lì.
Non sono sicuro se mi manca niente altro per eseguire lo script utilizzando PSExec, o è la limitazione psexec.exe. Vorrei iniziare uno script PS sul telecomando per fare qualcosa là localmente (comprimere alcuni file localmente e rimuovere i vecchi file) da mia casella.
Ho fatto una domanda simile in StackOverflow: Run processo remoto da PowerShell . Don mi ha suggerito di utilizzare PSExec. Suona come un modo alternativo per risolvere il problema. Tuttavia, non riesco a farlo funzionare con PowerShell. Un modo per ottenere PS lavorare sul PC remoto?
A proposito, non posso usare PS 2.0 in quanto la mia rete non mi permette di installare Windows XP SP3, che è richiesto per PS 2.0.
Soluzione
Dopo ulteriori indagini sullo strumento PSExec, penso che ho avuto la risposta. Ho bisogno di aggiungere l'opzione -i per dire PSExec per lanciare il processo a distanza in modalità interattiva:
PSExec \\RPC001 -i -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2
Senza -i, powershell.exe è in esecuzione sul telecomando in modalità di attesa. punto interessante è che se corro un semplice blocco (senza PS in pipistrello), funziona benissimo. Forse questo è qualcosa di speciale per il caso del PS? commenti e spiegazioni di benvenuto.
Altri suggerimenti
La risposta accettata non ha funzionato per me, ma il seguente fatto:
>PsExec.exe \\<SERVER FQDN> -u <DOMAIN\USER> -p <PASSWORD> /accepteula cmd
/c "powershell -noninteractive -command gci c:\"
Esempio da qui
Si può provare quanto segue?
psexec \\server cmd /c "echo . | powershell script.ps1"
accettato risposta non funziona per me, ma questo non fa. Garantire script nella posizione (c:.. \ Temp_ di seguito su ciascun server remoto servers.txt contiene un elenco di indirizzi IP (uno per riga)
psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1"