运行以下代码会产生错误,因为用于 path 的变量虽然在脚本中定义,但被解析为 null 事件:
$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
Run Code Online (Sandbox Code Playgroud)
如何从 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
Run Code Online (Sandbox Code Playgroud)
你那里有两个脚本,而不是一个。$TestScriptBlock 是嵌套在主脚本内的一个单独脚本,您将其发送到远程计算机,并且该远程计算机没有配置 $RemotePath。尝试:
$ServerName = "test01"
$TestScriptBlock = {
$RemotePath = "C:\Test\"
copy-item -Path $RemotePath -Destination C:\backup\ -Force -Recurse
}
$CurrentSession = New-PSSession -ComputerName $ServerName
Invoke-Command -Session $CurrentSession -ScriptBlock $TestScriptBlock
Run Code Online (Sandbox Code Playgroud)
(不过,我可能会称之为 $LocalPath)
| 归档时间: |
|
| 查看次数: |
7140 次 |
| 最近记录: |