如果它不存在,如何在powershell中为文件添加一行?

时间:2016-10-12 01:01:07

标签: powershell firefox

首先,我对powershell很新,而且很长一段时间潜伏着。请原谅我恶心的格式。

我试图为Firefox的.js文件写一些设置。我已经弄清楚了第一部分,但我似乎无法获得PowerShell来准确检查文件中是否已存在该字符串,然后什么都不做。每次运行时,如果文件存在,那么它只是将相同的信息附加到文件。

    $newline='pref("network.negotiate-auth.trusted-uris", "domain.com");'
    $jsfile='C:\Program Files (x86)\Mozilla Firefox\defaults\pref\policies.js'
    $jsfiledl='http://someserver/repo/windows/policies.js'

    If (!(Test-Path $jsfile)) {
       (New-Object System.Net.WebClient).DownloadFile($jsfiledl, 'C:\Program Files (x86)\Mozilla Firefox\defaults\pref\policies.js')
    } Else {
    If (!(Select-String -Path $jsfile -pattern $newline)){Add-Content $jsfile $newline}
    }

1 个答案:

答案 0 :(得分:2)

您只需将-SimpleMatch开关添加到Select-String

即可

这与正则表达式不匹配的原因是由括号引起的。括号表示在正则表达式中进行分组,并且不与文件中的字面括号匹配,从而导致整体无法匹配。