Não é possível obter o PSExec para funcionar com o Powershell

3

Na semana passada eu desenvolvi um script que verificaria se o psremoting estava habilitado em máquinas especificadas. Esta semana eu comecei a trabalhar em um script que habilitaria o psremoting em máquinas especificadas, mas eu não posso fazer o psexec rodar no powershell (também, sim, eu sei que o psremoting pode ser habilitado através da política de grupo). Aqui está o meu script:

$input = Read-Host @"
Select Option
(1)Manually enter computer(s)
(2)Retrieve computer(s) from file

Option
"@

If ($input -eq 1){
    $count = Read-Host "How many computers"
    $Computers = 1..$count
    $b=0;$c=1; ForEach ($Computer in $Computers) {$Computers[$b] = Read-Host "Computer" $c; $b++; $c++}
} ElseIF ($input-eq 2) {
    $Computers = Read-Host "File" 
    $Computers = Get-Content $Computers
} Else {
    write-host "Invalid Option"
    Exit
}

cls
$User = Read-Host "Enter username"
$Pass = Read-Host "Enter password"
cls

$PSExec = "C:\Windows\System32\PSExec\PSExec.exe"

ForEach ($Computer in $Computers){

# & $PSExec \$Computer -u $User -p $Pass -h -c "C:\Temp\mybat.bat"
& $PSExec \$Computer -u $User -p $Pass "ipconfig"

}

Eu recebo o seguinte erro ao executar o script:

PSExec.exe : At C:\MyStuff\EnablePSRemoting.ps1:34 char:1 + & $PSExec $Computer -u $User -p $Pass "ipconfig" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError

PsExec v2.11 - Execute processes remotely Copyright (C) 2001-2014 Mark Russinovich Sysinternals - www.sysinternals.com The system cannot find the file specified.

Eu então tentei simplesmente executar o PSExec diretamente do powershell, ainda sem sorte.

    
por Delonte Johnson 11.08.2015 / 16:38

2 respostas

4

Start-Process -Filepath "$PSExec" -ArgumentList "\$computer -u $user -p $pass $command" faz exatamente o que eu preciso fazer.

    
por 11.08.2015 / 23:14
0

No script, você precisa da barra invertida dupla antes do nome do computador:
    & \\ $ PSExec $ Computer -u $ User -p $ Pass "ipconfig"

Na lista de tentativas diretamente no PowerShell, se essa for a senha real, o sinal de cifrão duplo foi interpretado como o último token do último comando.

    
por 12.08.2015 / 15:23