我正在使用远程计算机(rem_comp)上的Powershell 4.0访问另一个计算机(此处安装的loc_comp;Powershell 2.0 ),以便获取列出的没有文件夹的文件数:
$var1 = 'H:\scripts'
Invoke-Command -Computername loc_comp -scriptblock {(Get-Childitem $var1 -recurse | Where-Object {!$_.PSIsContainer}).count}但是,当在$var1中使用-scriptblock时,它不会传递任何内容(也不会传递任何错误消息)。
在使用时
$var1 = 'H:\scripts'
Invoke-Command -Computername loc_comp -scriptblock {(Get-Childitem $ -recurse | Where-Object {!$_.PSIsContainer}).count}它起作用了!
注意:将var1从‘改为’无助。
在不使用Invoke-Command的情况下在本地运行命令也会遇到同样的问题。
怎么解决这个问题?
发布于 2016-02-26 14:03:19
当您使用调用命令和脚本块时,scriptblock无法从外部范围(范围规则)访问您的params。
但是,您可以定义这些参数,并将它们与-Argumentlist一起传递。
示例:
Invoke-Command -ComputerName "localhost" {param($Param1=$False, $Param2=$False) Write-host "$param1 $param2" } -ArgumentList $False,$True以下内容应适用于您的示例:
Invoke-Command -Computername loc_comp -scriptblock {param($var1)(Get-Childitem $var1 -recurse | Where-Object {!$_.PSIsContainer}).count} -ArgumentList $var1https://stackoverflow.com/questions/35653448
复制相似问题