Powershell ISE - 变量未解释

时间:2015-04-30 16:15:26

标签: powershell psexec 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 个答案:

答案 0 :(得分:1)

为了扩展其他一些答案,同事向我展示了更复杂的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中的各种疯狂错误。

希望这有助于某人或OP。

答案 1 :(得分:0)

更新

对,我试过这个,似乎有效:

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

success

答案 2 :(得分:0)

您无需引用任何内容。如果需要,PowerShell会自动引用。

psexec \\$computerName cmd