Powershell 使用字符串替换插入字符串'$_';在地狱里?

Powershell 使用字符串替换插入字符串'$_';在地狱里?,powershell,Powershell,我在powershell中更换字符串时遇到问题。请考虑以下表达式: "replaceTarget: %rep" -replace '%rep','$_' 我希望这个表达式的结果是: replaceTarget: $_ 但事实并非如此 replaceTarget: replaceTarget: $rep 我假设这是因为替换字符串“$\u”在replace函数中有其他含义 如何转义输入字符串,以便传入$\ucode>而不进行求值?您可以像这样使用.net replace函数: 'replace

我在powershell中更换字符串时遇到问题。请考虑以下表达式:

"replaceTarget: %rep" -replace '%rep','$_'
我希望这个表达式的结果是:

replaceTarget: $_
但事实并非如此

replaceTarget: replaceTarget: $rep
我假设这是因为替换字符串“$\u”在
replace
函数中有其他含义


如何转义输入字符串,以便传入
$\ucode>而不进行求值?

您可以像这样使用.net replace函数:
'replaceTarget:$rep.replace(“`rep”,“$”)
您可以像这样使用.net replace函数:
'replaceTarget:$rep'.replace(“$rep”,“$”)

尝试以下方法:

'replaceTarget: %rep' -replace '%rep','$$_'
试试这个:

'replaceTarget: %rep' -replace '%rep','$$_'

谢谢,这似乎有效。我尝试了
[Regex]::replace
,但也遇到了同样的问题。谢谢,这似乎有效。我尝试了
[Regex]::replace
,但也遇到了同样的问题。第一个字符串被扩展为
replaceTarget:[在$rep中的任何内容]
-但是您试图替换文本字符串
$rep
?@MathiasR.Jessen我编辑了这个问题以澄清其意图。第一个字符串被扩展为
replaceTarget:[在$rep中的任何内容]
-但是您试图替换文本字符串
$rep
?@MathiasR.Jessen我编辑了这个问题以澄清其意图。很好。$还充当一个espace字符??以前从未使用过!非常奇怪的行为:
PS>$test
->变量未定义。
PS>“$$test”
->$testtest@Kayasax在上一种情况下,$$将作为您输入的最后一个命令展开。请尝试>cls>“$$magic”。在那里,
-replace
将双$$用作转义,但实际上只是扩展系统的一个规则,我找不到原始文档,但如果找到,我将在这里给出反馈!我仍然不理解这种行为,从关于自动变量:“$$包含会话收到的最后一行中的最后一个令牌。”.cls>“$$magic”据我所知,应为null或包含clsmagic,而不是magicmagic…@Kayasax,如果我在powershell提示符下输入数字
cls
,则
“$$magic”
它返回
clsmagic
。如果在
-替换'xx','$$'之后使用,则不同,其中任何
xx
被替换为一个美元符号。您现在遵循了吗?很好。$还充当espace字符??以前从未使用过!非常奇怪的行为:
PS>$test
->变量未定义。
PS>“$$test”
->$testtest@Kayasax在上一种情况下,$$将作为您输入的最后一个命令展开。请尝试>cls>“$$magic”。在那里,
-replace
将双$$用作转义,但实际上只是扩展系统的一个规则,我找不到原始文档,但如果找到,我将在这里给出反馈!我仍然不理解这种行为,从关于自动变量:“$$包含会话收到的最后一行中的最后一个令牌。”.cls>“$$magic”据我所知,应为null或包含clsmagic,而不是magicmagic…@Kayasax如果我在powershell提示符下输入数字
cls
,则
“$$magic”
返回
clsmagic
。如果在
后使用不同的字符替换为“xx”、“$$”
,其中任何
xx
被替换为一个美元符号。现在是否遵循?