2016-10-12 7 views
1

まず、私はpowershellにかなり新しい、そして長い時間のlurkerです。私の嫌なフォーマットを許してください。ファイルが存在しない場合は、どの行をファイルに追加するのですか?

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} 
    } 
+0

'!(Select-String -Path $ jsfile -pattern $ newline -SimpleMatch)' select-stringは、デフォルトでregexを使います。あなたの検索文字列に正規表現のメタ文字が含まれています – Matt

答えて

2

必要なのは、あなたのSelect-String-SimpleMatchスイッチを追加することです。

これが正規表現と一致しない理由は、かっこのためです。カッコは、正規表現でのグループ化を意味し、ファイル内のリテラルカッコと一致しないため、全体的に一致しません。

+0

あなたは正しいMattです。最初は分析しなかっただけで、対話的にソリューションを試しました。 –

+0

はい、期間はそれだけで問題ありません。 –

+0

はい、この例ではOpが認識されるはずです。あなたの答えは、かっこが欠けている唯一のものだと思われます。正規表現についての一般的な答えは、私が提案したものです – Matt

関連する問題