ejemplos - script en powershell
Cómo iniciar procesos remotos en PowerShell (3)
Tengo un problema, tengo un script que:
- Conéctese con PSSession (uso
PSSession
con cuenta de administrador) - Detener el proceso 2
- Cambie en ellos los archivos
- Comience el proceso 2 (problema aquí)
Quiero iniciar el proceso en el servidor, así que me conecto con PSSession (No hay problema)
Hago Invocar-Comando:
# $pathProg path to my program
Invoke-Command -session $mySession -command {Start-Process $($args[0])} -ArgumentList $pathProg
Pero no hace nada (lo verifico con VNC)
Hago Invocar-Comando también:
# $pathProg path to my program
Invoke-Command -session $mySession -command {&$($args[0])} -ArgumentList $pathProg
Lanza el programa (Bueno) pero mi script espera el programa final (No es bueno)
Alguien tiene una idea ?
Gracias
¿Has intentado construir el comando como una cadena localmente, y luego pasarlo al script Invoke-Command como ScriptBlock?
$remoteSession = New-PSSession -ComputerName ''MyServer''
$processName = ''MyProcess''
$command = ''Start-Service '' + $processName + '';''
Invoke-Command -Session $remoteSession `
-ScriptBlock ([ScriptBlock]::create($command))
Remove-PSSession $remoteSession
Si desea recibir comentarios del servidor remoto, puede obtener la salida a través de Write-Output, de esta manera:
$command = ''Start-Service '' + $processName + '' | Write-Output ;''
Puedes intentar usar WMI:
$command = "notepad.exe"
$process = [WMICLASS]"//$CompName/ROOT/CIMV2:win32_process"
$result = $process.Create($command)
Si necesita pasar credenciales:
$cred = get-credential
$process = get-wmiobject -query "SELECT * FROM Meta_Class WHERE __Class = ''Win32_Process''" -namespace "root/cimv2" -computername $CompName -credential $cred
$results = $process.Create( "notepad.exe" )
$pathProg
puede no estar disponible dentro del bloque de script que finalmente se ejecuta. Es posible que desee pasarlo como un argumento para el bloque de secuencia de comandos
Invoke-Command -session $mySession -command { param($progPath) ... } -argumentlist $progPath
No es que la -argumentlist
argumentos externa, -argumentlist
los argumentos al scriptblock.