我正在尝试创建一个动态脚本块,因此我可以在脚本块中使用变量。
这是我的代码:
$Servers = "server1", "server2"
$Command = "c:\plink -t user@" + $Servers[0] + " -pw 'password'"
$Command = [Scriptblock]::Create($Command)
$Command2 = {c:\plink -t user@server1 -pw 'password'}
$command
$command2
在 PowerShell ISE 中运行脚本会产生我期望的结果:
c:\plink -t user@server1 -pw 'password'
c:\plink -t user@server1 -pw 'password'
$command 和 $command2 都呈现相同的输出,并且在使用 Get-Member -Verbose 检查时都是有效的脚本块。
我的问题是执行第一行会产生连接错误,其中 $command2 的相同输出工作正常并连接到服务器。
调查这个问题,我发现将 ISE 输出窗口中的两条生成的行复制/粘贴到记事本中会发现问题:
正如您在 JPG 中看到的那样,在“@”符号之后添加了一个奇数字符,这会导致命令失败......
知道为什么会发生这种情况(以及我该如何解决)?!?