我想将内容添加到网络配置中,但前提是该内容尚不存在。这就是我的工作:
$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;使用多行 - 字符串?
答案 0 :(得分:2)
您可以使用Select-String
(regex
接受-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
}