Windows Powershell可以';t读取变量作为启动进程文件路径
我正试图清理我的脚本,我遇到了这个问题 当我跑的时候Windows Powershell可以';t读取变量作为启动进程文件路径,windows,powershell,openvpn,start-process,Windows,Powershell,Openvpn,Start Process,我正试图清理我的脚本,我遇到了这个问题 当我跑的时候 Invoke-Command -ComputerName $Computer -ScriptBlock {Start-Process "c:\temp\openVPN\openvpn-install-2.4.8-I602-Win7.exe" 我没有问题,但当我设置一个变量,使脚本看起来像这样 $filepath = "c:\temp\openVPN\openvpn-install-2.4.8-I602-Win7.exe" Invoke-C
Invoke-Command -ComputerName $Computer -ScriptBlock {Start-Process "c:\temp\openVPN\openvpn-install-2.4.8-I602-Win7.exe"
我没有问题,但当我设置一个变量,使脚本看起来像这样
$filepath = "c:\temp\openVPN\openvpn-install-2.4.8-I602-Win7.exe"
Invoke-Command -ComputerName $Computer -ScriptBlock {Start-Process -FilePath $filepath }
我收到了错误
无法验证参数“FilePath”上的参数。参数为null或为空。请提供一个不为null或空的参数,然后重试该命令。
谢谢 您的
调用命令在远程计算机上执行。它在与调用范围(本地会话)不同的范围内运行,因此无法访问本地变量。$using
范围修饰符允许在远程范围中访问当前范围中定义的变量
Invoke-Command -ComputerName $Computer -ScriptBlock {Start-Process -FilePath $using:filepath }
请注意,这假定文件路径确实存在于远程计算机上。有关更多信息,请参阅。您的调用命令在远程计算机上执行。它在与调用范围(本地会话)不同的范围内运行,因此无法访问本地变量。$using
范围修饰符允许在远程范围中访问当前范围中定义的变量
Invoke-Command -ComputerName $Computer -ScriptBlock {Start-Process -FilePath $using:filepath }
请注意,这假定文件路径确实存在于远程计算机上。有关更多信息,请参阅。您可以在此处使用$using
范围修饰符:$using:filepath
。这将允许在远程作用域中访问调用作用域中的变量。您可以在此处使用$using
作用域修饰符:$using:filepath
。这将允许在远程作用域中访问调用作用域中的变量。