【问题标题】:Powershell string substitute masked variable [duplicate]Powershell字符串替换掩码变量[重复]
【发布时间】:2020-05-17 09:28:31
【问题描述】:

我想用一个变量替换现有的字符串,比如:

$x = "Hello `$xxx friend"
$xxx = 777
similar_to_js_exec($x) # i need here "Hello 777 friend"

我该怎么做?

【问题讨论】:

  • 根据您的情况,您可能会发现其他值得考虑的概念。看看-f 字符串格式运算符和here-string 构造。 Invoke-Expression cmdlet 被认为是高风险的 [类似于 sql 注入] 并且经常用于恶意软件,以至于它经常被完全阻止。
  • 我用过 $url = Invoke-Expression ("""" + $_["ConnectionUri"].Value + """"),丑 :) 实际上没有用户输入,只有硬编码,所以没有注入。这是一个 Exchange 端点,取决于 Azure 环境、CN、DE、GOV,因此必须传递一个带有参数的 URL,该参数具有另一个参数,即“outlook.office365.com/…”。不过谢谢你的帮助!
  • 啊!感谢您添加的信息。 [grin] ///// 请看一下-f 运算符。它通常完全不需要这些讨厌的嵌套引号。
  • @Lee_Dailey 不错的功能,这个和.NET String.Format()一样,我当然可以用,但是上面的代码已经用过了,而且比String.Format()快),但感谢您的建议!
  • @OlegSkripnyak - 我看到你的实际问题已经解决了......很高兴知道! [咧嘴]

标签: powershell


【解决方案1】:

你需要使用Invoke-Expression

$x = '"Hello $xxx friend"'
$xxx = 777
Invoke-Expression $x

【讨论】:

  • 我在本地运行它,它可以工作,你遇到什么错误?
  • @OlegSkripnyak 确保您使用引号,因为我使用它们。 Invoke-Expression 将获取字符串中的任何内容并执行它,因此您需要先使用单引号 ',然后再使用双引号 "
  • 您的变体运行良好,只需将我的 var 嵌入单引号,谢谢
  • 不得不把它改成一些奇妙的结构,其中 $_ 是 .NET Dictionary PS: $url = Invoke-Expression ("""" + $_["ConnectionUri"] .Value + """")
猜你喜欢
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 2015-04-18
  • 1970-01-01
  • 2013-02-16
  • 2015-12-21
相关资源
最近更新 更多