如果powershell中的文件没有';不存在?

如果powershell中的文件没有';不存在?,powershell,firefox,Powershell,Firefox,首先,我对powershell很陌生,而且是个长期潜伏者。请原谅我讨厌的格式 我正在尝试为Firefox的.js文件编写一些设置。我已经找到了第一部分,但我似乎无法让powershell准确地检查文件中是否已经存在字符串,然后什么也不做。每次运行时,如果文件存在,那么它只会将相同的信息附加到文件中 $newline='pref("network.negotiate-auth.trusted-uris", "domain.com");' $jsfile='C:\Program Fi

首先,我对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}
    }

您只需将
-SimpleMatch
开关添加到
选择字符串中即可


这与正则表达式不匹配的原因是括号。括号表示在正则表达式中分组,与文件中的文字括号不匹配,导致整体匹配失败。

!(选择String-Path$jsfile-pattern$newline-SimpleMatch)
Select String默认使用正则表达式。您的搜索字符串包含正则表达式元字符。您是对的。一开始我没有分析它,只是以交互方式尝试解决方案。是的,但是周期匹配得很好。在这种情况下是的,但是Op应该知道。你的回答让人觉得括号是唯一可能漏掉的东西。关于正则表达式的一个普遍答案是我所建议的,我们有些人不知道正则表达式在powershell中是本机识别的。这真是太棒了!非常感谢。