如何读取machine.config文件以检查其是否包含密钥?范例:oracle.managedaccess.client
。
下面是代码:
$configFilePath = [System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
Write-Host $configFilePath
$cnf = . $configFilePath
echo name
Write-Host $cnf
#check machine.config contains oracle.managedaccess.client
Ansgar Wiechers的有用答案很好地解释了代码中的问题,并提供了有用的背景信息。
这是显示一些相关技术的具体解决方案:
$file = [System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
[xml] $xml = Get-Content -Raw $file
# Get the <oracle.manageddataaccess.client> element
# that, in this example, is assumed to be a child element of the
# top-level <configuration> element.
$elem = $xml.configuration.'oracle.manageddataaccess.client'
# Determine if the element exists.
$exists = $null -ne $elem
说明:
[xml] $xml = Get-Content -Raw $file
是从文件中读取XML文档的一种更加PowerShell惯用的方式;使用[xml]
类型加速器会自动将通过获取的文件内容Get-Content
转换为XML文档(System.Xml.XmlDocument
)。
$xml.configuration.'oracle.manageddataaccess.client'
使用PowerShell对XML DOM的修改,以点符号(.
)方便地访问文档层次结构中的元素
注意,这是假设您知道目标元素的精确位置(路径)。如果您不这样做,请使用Ansgar的答案中的.SelectNodes()
或.SelectSingleNode()
建议的答案;请参阅底部的示例。
请注意需要oracle.manageddataaccess.client
用'...'
(引号)引起来,因为元素名称本身包含.
字符。
有关PowerShell如何适应XML DOM的更多信息,请参见此答案。
如果目标元素存在,System.Xml.XmlElement
则返回一个实例,如果目标元素具有自己的子元素(否则,.InnerText
将返回其属性)。
如果不存在这样的元素,则返回值为$null
。
$exists = $null -eq $elem
创建一个布尔变量,该变量指示感兴趣的元素是否存在。
.SelectSingleNode()
与XPath查询一起使用的示例:
以下内容返回<oracle.manageddataaccess.client>
在文档中任何位置(如果存在)以及$null
其他位置找到的元素:
$xml.SelectSingleNode('//oracle.manageddataaccess.client')
以下内容查找一个<section>
元素,该元素是elements的子元素<configuration>
,<configSections>
并且包含name
包含字符串的属性appSettings
$xml.SelectSingleNode('/configuration/configSections/section[@name="appSettings"]')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句