首页 > 解决方案 > 找不到“WriteElementString”的重载和参数计数:“2”

问题描述

我正在创建一个 xml 文件并使用“get-service”并尝试获取正在运行的服务的名称和状态。如果我只使用“get-service -name”然后是服务的名称,我会得到我需要的数据。但是,它不会那样写入 xml 文件。因此,我试图 get-service -name “name of服务”| 选择对象名称,状态。这会引发“找不到重载...”

有什么建议么?

我曾尝试仅使用 get-service“服务名称”,但写入 xml 文件的内容再次只是服务名称。我试图通过管道传输选择对象名称、状态,并且如上所述引发了错误。

# Set the File Name Create The Document
$XmlWriter = [System.XML.XmlWriter]::Create("G:\TestEnvironmentScript\$env:COMPUTERNAME-State.xml", $xmlsettings)

# Write the XML Decleration and set the XSL
$xmlWriter.WriteStartDocument()
$xmlWriter.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='style.xsl'")

# Start the Root Element
$xmlWriter.WriteStartElement("morestuff")

 $xmlWriter.WriteStartElement("ServerInformation") # <-- Start <Object>

 $xmlWriter.WriteElementString("ServerName",$env:COMPUTERNAME)

 $xmlWriter.WriteElementString("StateCheckTime",(Get-Date -Format G))

$xmlWriter.WriteStartElement("Services") # <-- Start <SubOject>

$XmlWriter.WriteElementString("nameofsomeservice",(Get-Service -Name Name-of-Some-Service | Select-Object Name, Status))

    $xmlWriter.WriteEndElement() # <-- End <Object>

$xmlWriter.WriteEndElement() # <-- End <Root> 

# End, Finalize and close the XML Document
$xmlWriter.WriteEndDocument()
$xmlWriter.Flush()
$xmlWriter.Close()

我只希望 xml 文档包含名称和状态。我可能只是对状态感到满意......

标签: powershell

解决方案


'WriteElementString' 错误被抛出,因为正在传递的数据 (Get-Service -Name Name-of-Some-Service | Select-Object Name, Status)就像

Name        Status
----        ----
ServiceName Running

如果将服务结果放入变量中,则可以引用每个元素并获得所需的结果

# Set the File Name Create The Document
$XmlWriter = [System.XML.XmlWriter]::Create("G:\TestEnvironmentScript\$env:COMPUTERNAME-State.xml", $xmlsettings)

# Write the XML Decleration and set the XSL
$xmlWriter.WriteStartDocument()
$xmlWriter.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='style.xsl'")

# Start the Root Element
$xmlWriter.WriteStartElement("morestuff")

 $xmlWriter.WriteStartElement("ServerInformation") # <-- Start <Object>

 $xmlWriter.WriteElementString("ServerName",$env:COMPUTERNAME)

 $xmlWriter.WriteElementString("StateCheckTime",(Get-Date -Format G))

$xmlWriter.WriteStartElement("Services") # <-- Start <SubOject>

$serviceState = (Get-Service -Name Name-of-Some-Service | Select-Object Name, Status)
$XmlWriter.WriteElementString("nameofsomeservice", ($serviceState.Name, $serviceState.Status))

    $xmlWriter.WriteEndElement() # <-- End <Object>

$xmlWriter.WriteEndElement() # <-- End <Root> 

# End, Finalize and close the XML Document
$xmlWriter.WriteEndDocument()
$xmlWriter.Flush()
$xmlWriter.Close()

推荐阅读