【发布时间】:2021-12-18 14:16:19
【问题描述】:
我想从 MsDtsSrvr.ini 中删除一个元素,即整个节点:
<Folder xsi:type="SqlServerFolder">
<Name>MSDB</Name>
<ServerName>.</ServerName>
</Folder>
文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<DtsServiceConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<StopExecutingPackagesOnShutdown>true</StopExecutingPackagesOnShutdown>
<TopLevelFolders>
<Folder xsi:type="SqlServerFolder">
<Name>MSDB</Name>
<ServerName>.</ServerName>
</Folder>
<Folder xsi:type="FileSystemFolder">
<Name>File System</Name>
<StorePath>..\Packages</StorePath>
</Folder>
</TopLevelFolders>
</DtsServiceConfiguration>
我没有做的是将整个节点变成变量,除非我这样做:
$sqlserverFolder = $xmlFile.SelectSingleNode("/DtsServiceConfiguration/TopLevelFolders/Folder")
$sqlServerFolder.ParentNode.RemoveChild($sqlServerFolder)
这实现了我想要的,但是明显的问题是我没有选择这个特定的节点,我想 powershell 只是选择了第一个。我宁愿避免去了解到底发生了什么。
当我使用此脚本选择所有节点时:
$xmlFile.SelectNodes("/DtsServiceConfiguration/TopLevelFolders/Folder")
我得到以下结果:
type Name ServerName
---- ---- ----------
SqlServerFolder MSDB .
FileSystemFolder File System
所以我尝试运行这样的东西:
$xmlFile.SelectNodes("/DtsServiceConfiguration/TopLevelFolders/Folder[@type='SqlServerFolder']")
但它不返回任何结果。我怎样才能抓住这个特定的节点,以便我可以删除它?
【问题讨论】:
标签: xml powershell