Powershell 调用命令won';t接受-Path作为变量
我试图使用Powershell 调用命令won';t接受-Path作为变量,powershell,Powershell,我试图使用Invoke命令对远程计算机执行一个简单的测试路径查询,但遇到了一个奇怪的错误 这项工作: Invoke-Command -ComputerName COMPUTER001 -ScriptBlock {Test-Path -Path "c:\windows\system.ini"} 此操作失败,原因是“无法将参数绑定到参数‘Path’,因为它为null。”: 我试过同时使用$p_FileName和$($p_FileName),但没有成功 是否有任何建议,并希望对发生的情况进行解释?您
Invoke命令
对远程计算机执行一个简单的测试路径
查询,但遇到了一个奇怪的错误
这项工作:
Invoke-Command -ComputerName COMPUTER001 -ScriptBlock {Test-Path -Path "c:\windows\system.ini"}
此操作失败,原因是“无法将参数绑定到参数‘Path’,因为它为null。”:
我试过同时使用$p_FileName
和$($p_FileName)
,但没有成功
是否有任何建议,并希望对发生的情况进行解释?您必须通过-ArgumentList参数传递脚本块中使用的局部变量:
$p_FileName = "c:\windows\system.ini"
Invoke-Command -ComputerName COMPUTER001 -ScriptBlock {Test-Path -Path $args[0]} -ArgumentList $p_FileName
您有一个范围问题。在远程服务器上运行的脚本块中的作用域无法访问本地变量。有几种方法可以解决这个问题。我最喜欢的是$Using:scope,但很多人都不知道它
$p_FileName = "c:\windows\system.ini"
Invoke-Command -ComputerName COMPUTER001 -ScriptBlock {Test-Path -Path $Using:p_FileName}
对于invoke命令,这允许您在脚本块中使用局部变量。这是为了在工作流中使用而引入的,也可以在DSC脚本块中使用。替代@kevmar和@mjolinor(至少适用于PS4): $p_FileName在本地计算机上解析,以便COMPUTER001接收
Test-Path c:\windows\system.ini
从命令中可能复制丢失路径,这是错误吗?
$p_FileName = "c:\windows\system.ini"
$sb = [scriptblock]::create("Test-Path $p_FileName")
Invoke-Command -ComputerName COMPUTER001 -ScriptBlock $sb
Test-Path c:\windows\system.ini