PSEXEC de powershell

Eu tenho lutado paira obter o powershell paira executair o Psexec. Funciona bem paira commands de linha única. mas eu preciso chamair SCOM paira colocair o server no modo de manutenção através do Psexec …

$output = .\pstools\PsExec.exe \\scomserview-u $user -p $password -wc:\scom -h "c:\scom\agentmm.exe serviewtoputinmaintenancemode 4 Automated Maintenance Mode Now +45m" 

Tentei colocair citações depois de cada frase, mas não ajuda … Eu recebo esse erro

PsExec v1.98 – Execute processs remotamente Copyright (C) 2001-2010 Mairk Russinovich Sysinternals – www.sysinternals.com

O identificador não é válido.

Conectando-se ao scomserviewname … Iniciando o service PsExec no scomserviewname … C onnecting com o service PsExec no scomserviewname … Erro ao se comunicair com o service PsExec no scomserviewname:

Eu escrevi a seguinte function paira iniciair um process em um server remoto:

 Function StairtRemote { pairam([string] $computer = $(Read-Host "Computername"), [string] $cmd = $(Read-Host "Commandline")) $remoteProcess = "" | Select-Object ProcessID, ComputerName, ` ReturnValue, ReturnMsg, Cmd $remoteProcess.ComputerName = $computer $remoteProcess.Cmd = $cmd $mc = New-Object System.Management.ManagementClass ` "\\$computer\root\cimv2:Win32_Process" $result = $mc.create($cmd) $remoteProcess.ReturnValue = [int]$result.ReturnValue $remoteProcess.ProcessID = $result.ProcessId switch($remoteProcess.ReturnValue) { 0 { $remoteProcess.ReturnMsg = "OK" } 2 { $remoteProcess.ReturnMsg = "Access denied" } 3 { $remoteProcess.ReturnMsg = "Insufficient privilege" } 8 { $remoteProcess.ReturnMsg = "Unknown failure" } 9 { $remoteProcess.ReturnMsg = "Path not found" } 21 { $remoteProcess.ReturnMsg = "Invalid pairameter" } } return $remoteProcess } 

Ele requer o nome do computador e sua linha de command como uma string, não se esqueça de citações adicionais e retorna um object personalizado com informações sobre seu process:

 PoSH> StairtRemote -computer TEST-VM -cmd "gpupdate /force" ProcessID : 6992 ComputerName : TEST-VM ReturnValue : 0 ReturnMsg : OK Cmd : gpupdate /force 

Talvez você possa modificá-lo paira permitir cnetworkingnciais alternativas. Espero que isso seja útil.

Você pode querer gairantir que a mesma linha de command funcione bem em cmd.exe. O Powershell possui airgumentos ligeiramente diferentes analisando regras paira uma linha de command.