PSEXEC da powershell

2

Eu tenho lutado para obter o powershell para rodar o Psexec. Funciona bem para comandos de linha única. mas eu preciso chamar o SCOM para colocar o servidor em modo de manutenção através do Psexec ...

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

Eu tentei colocar aspas depois de cada frase, mas não ajuda ... Eu recebo este erro

PsExec v1.98 - Executa processos remotamente Copyright (C) 2001-2010 Mark Russinovich Sysinternals - www.sysinternals.com

O identificador é inválido.

Conectando ao scomservername ... Iniciando o serviço PsExec no scomservername ... C onnecting com o serviço PsExec no scomservername ... Erro ao comunicar-se com o serviço PsExec ce on scomservername:

    
por user98805 04.11.2011 / 17:15

2 respostas

2

Eu escrevi a seguinte função para iniciar um processo em um servidor remoto:

Function StartRemote {
   param([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 parameter" }
   }
   return $remoteProcess
 }

Requer o nome do computador e sua linha de comando como uma string, evite aspas adicionais e retorna um objeto personalizado com informações sobre o processo:

PoSH> StartRemote -computer TEST-VM -cmd "gpupdate /force"

ProcessID    : 6992
ComputerName : TEST-VM
ReturnValue  : 0
ReturnMsg    : OK
Cmd          : gpupdate /force

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

    
por 17.02.2012 / 11:40
1

Você pode querer certificar-se de que a mesma linha de comando funcione bem no cmd.exe. Powershell tem argumentos ligeiramente diferentes, analisando regras para uma linha de comando.

    
por 09.11.2011 / 21:39