先週、指定したマシンでpsremotingが有効になっているかどうかを確認するスクリプトを開発しました。今週、指定したマシンでpsremotingを有効にするスクリプトの作成を開始しましたが、psshellを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 char:1 +&$ PSExec $ Computer -u $ User -p $ Pass "ipconfig" + ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:String)[]、RemoteException + FullyQualifiedErrorId: NativeCommandError
PsExec v2.11-プロセスをリモートで実行するCopyright(C)2001-2014 Mark Russinovich Sysinternals-www.sysinternals.com指定されたファイルが見つかりません。
その後、PowerShellから直接PSExecを実行しようとしましたが、まだうまくいきませんでした。
Start-Process -Filepath "$PSExec" -ArgumentList "\\$computer -u $user -p $pass $command"
は、私が必要とすることを正確に実行します。
スクリプトでは、コンピューター名の前に二重のバックスラッシュが必要です。
&\\ $ PSExec $ Computer -u $ User -p $ Pass "ipconfig"
PowerShellでの直接試行のリストで、それが実際のパスワードである場合、二重ドル記号は最後のコマンドの最後のトークンとして解釈されました。