如何将PowerShell PS-Session内执行的代码输出写入本地文本文件
问题根由
Invoke-Command触发的脚本块运行在远程服务器的独立PowerShell会话中,和你本地的PowerShell会话完全隔离,脚本块内部声明的$temp是远程会话的局部变量,不会同步到你本地的$global:temp变量,因此会话断开后本地变量自然为空。- 脚本块内使用
Write-Host仅会将内容输出到远程会话的控制台流,不会进入标准输出流返回给本地,因此本地无法拿到对应内容。
修复方案
直接让脚本块返回你需要的内容,本地用变量接收返回值即可,修改后的代码如下:
$path = "你的本地文件完整路径" # 本地变量直接接收远程执行返回的结果 $temp = Invoke-Command -Computername server01 -Scriptblock { # 直接输出目标内容,不要用Write-Host some code | Out-String } # 本地写入文件 $temp | Add-Content $path
补充说明
- 如果需要在远程脚本块中使用本地定义的变量,需要添加
$using:前缀,比如要调用本地的$path变量,远程脚本块内写$using:path即可。 - 如果执行时报权限错误,可添加
-Credential参数传入远程服务器的合法授权账号。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

