Назад | Перейти на главную страницу

Не удается заставить PSExec работать с Powershell

На прошлой неделе я разработал сценарий, который проверяет, включен ли psremoting на определенных машинах. На этой неделе я начал работать над сценарием, который включит psremoting на определенных машинах, но я не могу заставить psexec работать в PowerShell (да, я знаю, что psremoting можно включить с помощью групповой политики). Вот мой сценарий:

$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"

}

При выполнении скрипта я получаю следующую ошибку:

PSExec.exe: в C: \ MyStuff \ EnablePSRemoting.ps1: 34 символа: 1 + & $ PSExec $ Computer -u $ User -p $ Pass "ipconfig" + ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (: String) [], RemoteException + FullyQualifiedErrorId: NativeCommandError

PsExec v2.11 - Удаленное выполнение процессов Copyright (C) 2001-2014 Марк Руссинович Sysinternals - www.sysinternals.com Система не может найти указанный файл.

Затем я попытался просто запустить PSExec напрямую из PowerShell, но все равно не повезло.

Start-Process -Filepath "$PSExec" -ArgumentList "\\$computer -u $user -p $pass $command"делает именно то, что мне нужно.

В сценарии вам понадобится двойная обратная косая черта перед именем компьютера:
& \\ $ PSExec $ Computer -u $ User -p $ Pass "ipconfig"

В списке попыток непосредственно в PowerShell, если это действительный пароль, то двойной знак доллара интерпретировался как последний токен последней команды.

Я пробовал использовать это, и, похоже, он работает при использовании синтаксиса

.\Psexe.exe \\$Computer

С ведущей точкой на месте.