Estoy tratando de ejecutar un archivo cmd en una lista de 48 computadoras. No quiero ejecutar y esperar la finalización secuencialmente porque cada cmd tarda unos 10 minutos en completarse. WinRM no es una opción. Tampoco lo es WMI. PSExec es una opción ... pero parece que no puedo hacerlo funcionar dentro de Start-Job.PSExec nunca termina cuando se ejecuta dentro de start-job
que estoy haciendo algo como:
$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
}
Esto crea un montón de puestos de trabajo .... pero el nunca es completa y si recibo-Trabajo en cualquiera de ellos que vuelva
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
se ejecuta muy bien si me quedo la función como:
& $sb -computer "serverw01"
guión Iniciando se ejecuta en Powershell v2.0 en Ser ver 2008r2 box Lo he intentado en una caja en domain2 mientras estoy conectado con un ID de usuario de administrador de dominio (mismo resultado).
Gracias Lizz. La respuesta parece ser la ubicación del valor de la computadora. Lo intenté con y sin el -d y/accepteula (hace tiempo que acepté eula :)) y el factor habilitador fue asegurarme de que el valor del nombre de la computadora fuera el primer valor después de PSEXEC. –