【发布时间】:2019-03-25 19:08:39
【问题描述】:
我正在尝试使用登录用户的 ID 编辑 XML 文件中的属性值
我试过了:
$user = $env:USERNAME
$xml = [xml](Get-Content "D:\Python\prm.xml")
$node = $xml.BootStrap.DataBaseAliases.LastLoginUserName
$node.SetAttribute("LastLoginUserName", "$user");
它返回一个错误: 您不能在空值表达式上调用方法。 在 D:\Python\a.ps1:5 char:1 + $node.SetAttribute("LastLoginUserName", "$user"); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
还尝试了以下方法:
$user = $env:USERNAME
$FileLocation = "D:\Python\prm.xml"
$File = Get-Content $FileLocation
$XML = [XML]$File
$XPpath = "/BootStrap/DataBaseAliases/LastLoginUserName"
$node = $XML.SelectNodes($XPpath)
$node | % { $_.SetAttribute("attribute-1", "$user") }
$XML.OuterXml | Out-File $FileLocation
这不会返回任何错误,但 xml 是不变的。 XML 内容如下:
<?xml version="1.0" encoding="utf-8"?><BootStrap MajorVersion="18"
MinorVersion="8" PatchVersion="5" DeploymentVersion="0"><DataBaseAliases
DefaultPMAlias="Corp_2016" LastLoginUserName="FOOUSER"><Alias>
<Name>PMDB</Name><AppType>Project Management</AppType><Connection>
<DriverName>SQLServer</DriverName><BlobSize>-
我想用当前登录的用户替换 FOOUSER。
【问题讨论】:
-
谢谢,修正了错字,但现在它返回以下错误:方法调用失败,因为 [System.String] 不包含名为“SetAttribute”的方法。在 D:\Python\a.ps1:5 char:1 + $node.SetAttribute("LastLoginUserName", "$user"); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound
标签: xml powershell