运行以下代码会出现错误,因为虽然在脚本中定义了路径变量,但它被解析为null。
如何从ScriptBlock内部调用父脚本中定义的$RemotePath?我需要在父脚本的其他部分使用$RemotePath。请注意,这个值不会改变,所以它可以是一个常量。 更新--可行解决方案 你必须将变量作为参数传递到脚本块中:
$ServerName = "test01"
$RemotePath = "C:\Test\"
$TestScriptBlock = { copy-item -Path $RemotePath -Destination C:\backup\ -Force -Recurse }
$CurrentSession = New-PSSession -ComputerName $ServerName
Invoke-Command -Session $CurrentSession -ScriptBlock $TestScriptBlock
如何从ScriptBlock内部调用父脚本中定义的$RemotePath?我需要在父脚本的其他部分使用$RemotePath。请注意,这个值不会改变,所以它可以是一个常量。 更新--可行解决方案 你必须将变量作为参数传递到脚本块中:
$ServerName = "test01"
$RemotePath = "C:\Test\"
$TestScriptBlock = { param($RemotePath) copy-item -Path $RemotePath -Destination C:\backup\ -Force -Recurse }
$CurrentSession = New-PSSession -ComputerName $ServerName
Invoke-Command -Session $CurrentSession -ScriptBlock $TestScriptBlock -ArgumentList $RemotePath
$using:RemotePath
有效吗? - Dan Stevens