Powershell:将文本块与文件进行比较

时间:2015-11-06 15:44:03

标签: powershell

这看起来似乎是一项足够简单的任务,但无论出于何种原因,这都不起作用:

    #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 ...任何想法?

1 个答案:

答案 0 :(得分:3)

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

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

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

但现在$ Prefsjs不再是一个数组,所以你不能使用-Contains。它现在只是一个字符串,因此您可以使用字符串contains()方法来完成同样的事情:

$Prefsjs.contains($Update)