Sto provando ad eseguire un file cmd su un elenco di 48 computer. Non voglio eseguire e attendere il completamento in sequenza poiché ogni cmd impiega circa 10 minuti per essere completato. WinRM non è un'opzione. Né è WMI. PSExec è un'opzione .... ma non riesco a farlo funzionare all'interno di Start-Job.PSExec non viene mai completato quando viene eseguito all'interno di start-job
che sto facendo qualcosa di simile:
$sb = {
param
(
$computer = "serverw01",
$userid = "domain2\serviceid",
$password = 'servicepw',
$command = "cd /d d:\ && updateAll.cmd"
)
d:\eps\pstools\PsExec.exe -u $userid -p $password "\\$($computer)" cmd /c $command
}
foreach ($computer in Get-Content "D:\Data\serverlist.txt") {
Start-Job $sb -ArgumentList $computer
}
Questo crea un sacco di posti di lavoro .... ma la non completa e se ricevo-Job su uno di essi mi rimetto
PS> get-job | receive-job -Keep
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
esegue bene se corro la funzione come:
& $sb -computer "serverw01"
script di avvio viene eseguito in PowerShell v2.0 su Ser ver 2008r2 box L'ho provato su una casella in domain2 quando ho effettuato l'accesso con un ID utente di dominio admin (stesso risultato).
Grazie Lizz. La risposta sembra essere il posizionamento del valore del computer. L'ho provato con e senza -d e/acceptteula (ho accettato da tempo eula :)) e il fattore abilitante è stato assicurarsi che il valore del computername fosse il primo valore dopo PSEXEC. –