Powershell转义包含密码的变量

时间:2017-12-28 14:11:47

标签: powershell

所以我使用的是一个包含密码的变量,最近发现一些密码包含特殊字符。我无法控制密码是什么,所以我必须处理我得到的任何东西。我知道后面的勾号'`' character是用来转义字符的东西。这篇文章的全部原因是我发现密码是文本文件,并用'xxxxxxxxx'

模式替换找到的密码。

目前我使用的代码是:

import * as _ from 'lodash';    

因为$ pass变量包含' $'字符$ 123asd被视为没有值的变量

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

所以你得到的是:

$pass

如果我像这样更改传递变量

DR##!

然后' $'字符被忽略,字符串完整,但如果我运行代码:

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

密码没有被替换,我不知道为什么。

1 个答案:

答案 0 :(得分:3)

-replace是一个正则表达式运算符,而$ sigil确实是正则表达式中的一个特殊字符。

您可以使用[regex]::Escape()转义文字字符串中的所有正则表达式元字符:

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