Powershell ISE - Переменная не интерпретируется

Я экспериментирую со следующим скриптом в Powershell ISE, но при его выполнении возвращается ошибка.

$computerName = Read-Host "Enter name of remote computer"
psexec \\"$computerName" cmd

Часть Read-Host работает нормально, но когда она перемещается в строку psexec, она возвращает

Enter name of remote computer: Computer

psexec : 
At line:2 char:1
+ psexec \\"$computerName" cmd
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

Таким образом, кажется, что скрипт не передает значение $ computer. Я пробовал разные "" комбинации безрезультатно.

Любая помощь будет высоко ценится, я довольно новичок в сценариях PowerShell.

3 ответа

Решение

Обновлено:

верно, я попробовал это, кажется, работает

$computerName = Read-Host "Enter Name of computer"
$cred = Get-Credential
psexec \\$computerName -u $cred.UserName -p $cred.GetNetworkCredential().Password ipconfig 2> $null #hide errors

успех

Чтобы расширить некоторые другие ответы, метод, который коллега показал мне для более сложных строк psexec, выглядит следующим образом:

#Use Psexec to Allow all remote connections and Enable PSRemoting
$psexec = "psexec -accepteula \\"+$targetIP+" -u "+$localadmin+" -p "+'"'+$str+'"'+' -h powershell.exe "&{"Set-Item wsman:localhost\client\trustedhosts -Value * -Force" ; "Enable-PSRemoting -SkipNetworkProfileCheck -Force"}"'
invoke-command -ScriptBlock {cmd /c $args[0]} -Argumentlist $psexec

Хотя приведенный выше код на самом деле вызывает psexec на удаленной машине, а затем доставляет две команды powershell, проблема аутентификации вызывает всевозможные сумасшедшие ошибки в PS.

Надеюсь, что это помогает кому-то или ОП.

Вам не нужно ничего цитировать. PowerShell процитирует автоматически при необходимости.

psexec \\$computerName cmd
Другие вопросы по тегам