这看起来似乎很简单,但是无论出于什么原因,它都不起作用:

    #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中...有什么想法吗?

最佳答案

它不会匹配,因为您正在将多行字符串与单行字符串数组进行比较。

您需要比较类似的对象,这意味着$ Prefsjs也需要是一个单行的字符串。最简单的方法是将-Raw开关添加到Get-Content中:

#read in Prefsjs
    $Prefsjs = (Get-Content $PrefsFiles -Raw)

但是现在$ Prefsjs不再是数组,因此您不能使用-Contains。现在它只是一个字符串,因此您可以使用字符串contains()方法完成相同的操作:
$Prefsjs.contains($Update)

09-13 06:26