我有一个PowerShell远程处理脚本,该脚本的测试路径始终为false。
$pathname = "C:temp"
$hostremote = "computer122" #example
示例-不起作用:
Invoke-Command -ComputerName $hostremote {Test-Path -Path '$pathname' }
示例-工作良好:
Invoke-Command -ComputerName $hostremote {Test-Path -Path 'C:temp' }
我试着用";并且这导致了一个错误;出来这一定是一个简单的powershell技巧,我错过了这么简单的事情。
有几个问题:
首先,在调用变量时不要使用单引号。如果您想按原样使用变量,为什么要使用引号?CCD_ 1要简单得多。如果您想在其他内容中进行设置,请使用双引号-Path "$pathnameSomeSubDir"
第二,你的变量在一个不同的范围内,所以你不能像这样检索它,所以你可以做这个
Invoke-Command -ComputerName $hostremote {Test-Path -Path $using:pathname }
但这对我来说似乎很糟糕,我更喜欢这个:
Invoke-Command -ComputerName $hostremote {Test-Path -Path $args[0] } -ArgumentList $pathname