script ejemplos comandos basicos actualizar powershell remoting invoke-command start-process

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.