检查内容是否在web.config中

时间:2015-12-08 09:01:00

标签: powershell

我想将内容添加到网络配置中,但前提是该内容尚不存在。这就是我的工作:

$webconfig = Get-Content F:\whatever\web.config
if ($webconfig -notlike "*WebGrease*" ) {
  // do stuff here
}

现在我的问题是:即使web.config包含类似

的内容
<dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
      </dependentAssembly>

它仍然会在&#34;代码中输入代码&#34;。问题是什么?没有&#34;不喜欢&#34;使用多行 - 字符串?

1 个答案:

答案 0 :(得分:2)

您可以使用Select-Stringregex接受-Pattern)轻松找到字符串:

if(-not(Select-String -Pattern "WebGrease" -Path "F:\whatever\web.config")) {
    // do stuff here
}

由于您使用的是XML文件,正如@Mathias R. Jessen所建议的那样,您可以使用Select-Xml直接定位该节点:

if(-not(Select-Xml -Xml "F:\whatever\web.config" -XPath '//assemblyIdentity[@name = "WebGrease"]')) {
    // do stuff here
}