如何在本地机器上使用在远程机器上设置的变量
How to use a variable that was set on a remote machine, on a local machine
我正在编写一个脚本,该脚本从远程计算机上存储的 XML 文档中获取文件夹在远程计算机上的位置。然后我想将该文件夹复制到本地 PC。这是我目前拥有的代码:
Invoke-Command -Session $TargetSession -ScriptBlock {
if (Test-Path "$env:USERPROFILE\pathto\XML") {
[xml]$xml = Get-Content $env:USERPROFILE\pathto\XML
$XMLNode = $xml.node.containing.file.path.src
foreach ($Log in $XMLNode) {
$LogsP = Split-Path -Path $Log -Parent
$LogsL = Split-Path -Path $Log -Leaf
}
} else {
Write-Host "There is no XML file!"
}
Copy-Item -Path "$LogsP" -FromSession $TargetSession -Destination "$env:TEMP" -Force -Recurse -Container
$logsP
永远不会在 Invoke-Command
脚本块之外填充。我试过使用 return
,我试过将它设置为全局变量,我试过在脚本块中使用 Copy-Item
命令(无论我做什么,它都会给我一个访问被拒绝的错误更改为 Winrm/PSRemoting)。有谁知道我如何在脚本块之外填充 $logsP
?
不要在脚本块内的变量中收集父路径。只需让它回显到 Success 输出流,并在本地计算机上的变量中收集 Invoke-Command
的输出。
$LogsP = Invoke-Command -Session $TargetSession -ScriptBlock {
if (Test-Path "$env:USERPROFILE\pathto\XML") {
[xml]$xml = Get-Content $env:USERPROFILE\pathto\XML
foreach ($Log in $xml.node.containing.file.path.src) {
Split-Path -Path $Log -Parent
}
}
}
$LogsP | Copy-Item -FromSession $TargetSession -Destination "$env:TEMP" -Force -Recurse -Container
我正在编写一个脚本,该脚本从远程计算机上存储的 XML 文档中获取文件夹在远程计算机上的位置。然后我想将该文件夹复制到本地 PC。这是我目前拥有的代码:
Invoke-Command -Session $TargetSession -ScriptBlock {
if (Test-Path "$env:USERPROFILE\pathto\XML") {
[xml]$xml = Get-Content $env:USERPROFILE\pathto\XML
$XMLNode = $xml.node.containing.file.path.src
foreach ($Log in $XMLNode) {
$LogsP = Split-Path -Path $Log -Parent
$LogsL = Split-Path -Path $Log -Leaf
}
} else {
Write-Host "There is no XML file!"
}
Copy-Item -Path "$LogsP" -FromSession $TargetSession -Destination "$env:TEMP" -Force -Recurse -Container
$logsP
永远不会在 Invoke-Command
脚本块之外填充。我试过使用 return
,我试过将它设置为全局变量,我试过在脚本块中使用 Copy-Item
命令(无论我做什么,它都会给我一个访问被拒绝的错误更改为 Winrm/PSRemoting)。有谁知道我如何在脚本块之外填充 $logsP
?
不要在脚本块内的变量中收集父路径。只需让它回显到 Success 输出流,并在本地计算机上的变量中收集 Invoke-Command
的输出。
$LogsP = Invoke-Command -Session $TargetSession -ScriptBlock {
if (Test-Path "$env:USERPROFILE\pathto\XML") {
[xml]$xml = Get-Content $env:USERPROFILE\pathto\XML
foreach ($Log in $xml.node.containing.file.path.src) {
Split-Path -Path $Log -Parent
}
}
}
$LogsP | Copy-Item -FromSession $TargetSession -Destination "$env:TEMP" -Force -Recurse -Container