首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >包含密码的变量的Powershell转义

包含密码的变量的Powershell转义
EN

Stack Overflow用户
提问于 2017-12-28 22:11:47
回答 1查看 553关注 0票数 1

因此,我使用了一个包含密码的变量,最近才发现一些密码包含特殊字符。我无法控制密码是什么,所以我必须处理我得到的任何东西。我知道反勾号'`‘字符是用来转义字符的。这篇文章的全部原因是,我正在查找密码是文本文件,并将找到的密码替换为“xxxxxxxxx”模式。

目前我使用的代码是:

代码语言:javascript
代码运行次数:0
运行
复制
$pass = "DR$123asd##!"

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

代码语言:javascript
代码运行次数:0
运行
复制
$pass

所以你能得到的就是:

代码语言:javascript
代码运行次数:0
运行
复制
DR##!

如果我像这样改变pass变量

代码语言:javascript
代码运行次数:0
运行
复制
$pass = 'DR$123asd##!'
$pass
DR$123asd##!

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

代码语言:javascript
代码运行次数:0
运行
复制
$output | foreach-object { $_ -replace "$pass", 'xxxxxxxx' }
This is my password DR$123asd##!, It is a great password!

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-28 22:27:44

-replace是一个正则表达式操作符,而$符号实际上是正则表达式中的一个特殊字符。

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

代码语言:javascript
代码运行次数:0
运行
复制
$output | foreach-object { $_ -replace [regex]::Escape("$pass"), 'xxxxxxxx' }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48009027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档