这看起来似乎是一项足够简单的任务,但无论出于何种原因,这都不起作用:
#Verifies that the firefox proxy setting have been applied
#locate Prefsjs file
$PrefsFiles = Get-Item -Path ($env:SystemDrive+"\Users\*\AppData\Roaming\Mozilla\Firefox\Profiles\*\prefs.js")
#read in Prefsjs
$Prefsjs = (Get-Content $PrefsFiles)
#Block to compare
$Update= @"
user_pref("network.proxy.http", "0.0.0.0");
user_pref("network.proxy.http_port", 80);
"@
($Prefsjs -contains $Update)
最后一行应该返回true,因为文本实际上确实存在于$ Prefsjs ...任何想法?
答案 0 :(得分:3)
它不会匹配,因为您将多行字符串与单行字符串数组进行比较。
您需要比较相似的对象,这意味着$ Prefsjs也需要是单个多行字符串。最简单的方法是将-Raw开关添加到Get-Content
:
#read in Prefsjs
$Prefsjs = (Get-Content $PrefsFiles -Raw)
但现在$ Prefsjs不再是一个数组,所以你不能使用-Contains
。它现在只是一个字符串,因此您可以使用字符串contains()
方法来完成同样的事情:
$Prefsjs.contains($Update)