2017-12-28 4 views
1

パスワードを含む変数を使用していて、パスワードの一部に特殊文字が含まれていることがわかったばかりです。私はパスワードが何であるかを制御することができないので、私は何を得ているのか対処しなければならない。私はバックチックを知っています '' '文字はエスケープ文字に使われています。このポストの全理由は、パスワードがテキストファイルであり、見つかったパスワードを 'xxxxxxxxx'というパターンで置き換えることです。パスワードを含む変数のPowershellエスケープ

は、現在、私が使用していたコードはこれです:$パス変数は、「$」文字が含まれてい

$pass = "DR$123asd##!" 

ので$ 123asdが値を持たない変数として見られている

$pass 

だからあなたが得るのは:

DR##! 

このようなパス変数を変更すると、

$pass = 'DR$123asd##!' 
$pass 
DR$123asd##! 

は、次に「$」文字は無視され、文字列が完了しているが、私は、コードを実行した場合:

$output | foreach-object { $_ -replace "$pass", 'xxxxxxxx' } 
This is my password DR$123asd##!, It is a great password! 

パスワードが交換されないと、私は、なぜわからないんだけど。

答えて

3

-replaceは正規表現演算子であり、$ sigilは実際には正規表現の特殊文字です。

あなたは[regex]::Escape()と文字列リテラル内のすべての正規表現のメタ文字をエスケープすることができます

$output | foreach-object { $_ -replace [regex]::Escape("$pass"), 'xxxxxxxx' } 
+0

はい、それは、あなたに感謝ありません。私は[正規表現]を簡単に使用できることに気づいていませんでした。私はそれがおそらく正規表現になるだろうと知っていたが、それは簡単です。素晴らしいです、ありがとう。 – todd1215

関連する問題