【问题标题】:the powershell replace command fails because the string contains the character '\' in itpowershell replace 命令失败,因为字符串中包含字符“\”
【发布时间】:2015-08-26 14:40:56
【问题描述】:

我正在从 WMI 中提取机器的本地登录用户,并将其存储在一个变量中,如下所示:

$user = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $hostname).username

而且效果很好。问题是 WMI 以

格式返回信息

contoso\用户名

我需要将变量插入到 Get-ADUser 命令中,该命令不接受

"contoso\"

当我尝试在 powershell 中使用替换命令时,由于命令中存在“\”而失败:

$user = $user -replace "CONTOSO\"

The regular expression pattern CONTOSO\ is not valid.
At line:1 char:1
+ $user = $user -replace "CONTOSO\"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (CONTOSO\:String) [],        RuntimeException
+ FullyQualifiedErrorId : InvalidRegularExpression

是否有其他方法可以删除这些字符,以便我可以将其插入 Get-ADUser?也许在我将其插入 Get-ADUser 之前清理 gwmi 的输出?或者,是否有某种字符转义序列?

【问题讨论】:

  • \ 是我所知道的大多数语言中的转义字符。尝试将其替换为 \\:$user = $user -replace "CONTOSO\\"
  • 酱汁真棒!做到了,而且,呃!从一开始就应该考虑尝试。谢谢!

标签: powershell-3.0


【解决方案1】:

-replace 运算符执行正则表达式替换。在正则表达式中,字符\ 是用于转义特殊字符的特殊字符,因此您需要\\ 来匹配文字反斜杠。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多