PowerShell将Get-Content结果存入变量无数据返回问题求助
问题分析与解决方案
我一眼就看出问题出在XML对象的输出方式和几个小语法细节上,咱们一步步拆解:
核心问题:XML对象不能直接用Write-Host输出
当你用[xml]$DataFileContent = Get-Content ...把文件内容强制转换成XML文档对象后,$DataFileContent本质是一个System.Xml.XmlDocument类型的对象。而Write-Host默认只会输出对象的类型名称,不会显示XML的实际内容——这就是你看不到有效输出的根本原因。
需要修正的语法细节
- UNC路径格式错误:你的
Get-ChildItem命令里路径\$Server\C$\ *.data有两个问题:路径开头必须是双反斜杠\\,且通配符和路径之间不能有空格,正确写法是\\$Server\C$\*.data。 - 路径写法可简化:
Microsoft.PowerShell.Core\FileSystem::\\$Server\C$\$DataFile可以直接简化为"\\$Server\C$\$DataFile",PowerShell会自动识别文件系统路径。
修正后的完整脚本
# 正确获取目标.data文件的文件名(确保路径格式正确) $DataFile = Get-ChildItem "\\$Server\C$\*.data" -Name # 读取文件内容并转换为XML对象 [xml]$DataFileContent = Get-Content "\\$Server\C$\$DataFile" # 输出XML的完整文本内容 Write-Host $DataFileContent.OuterXml # 或者更直观地查看XML结构,直接输出对象即可(PowerShell会自动格式化节点) $DataFileContent
额外提示
如果你的目录下有多个.data文件,Get-ChildItem会返回所有匹配的文件名(此时$DataFile是数组),后续Get-Content会报错。建议加上-First 1指定获取第一个文件,或者循环处理多个文件:
Get-ChildItem "\\$Server\C$\*.data" | ForEach-Object { [xml]$xmlContent = Get-Content $_.FullName Write-Host "文件 $($_.Name) 的内容:" $xmlContent.OuterXml }
内容的提问来源于stack exchange,提问作者rjbogz
相关产品推荐
相关产品推荐

