PowerShell脚本块中的变量替换以管理员身份运行

时间:2018-10-02 20:48:51

标签: powershell

我正在用PowerShell编写代码。我想以管理员身份更改配置文件中的端口,但不起作用。

这是我的代码:

tableView(_ tableView: UITableView, viewForHeaderInSection section: Int)

我认为它在-replace(“ httpPort = $ port”)的第二部分上遇到了麻烦。

我想念什么?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

Start-Process -Verb RunAs -Wait -FilePath powershell.exe -ArgumentList '-Command',
  "$($ScriptBlock -replace '"', '\"'); bar $port"

顺便说一句:
*您用来匹配端口号的正则表达式表明它是一个不带引号的属性值,尽管在 HTML 中可以接受,但它的格式不正确 XML
*不要使用方法语法bar($port)来调用函数-PowerShell函数的调用就像shell命令一样,没有括号,并且参数之间用空格隔开,而不是,:{ {1}}

关于您尝试过的事情:

  • bar $port始终将传递给Start-Process的参数解释为 strings ,尽管脚本块方便地将其字符串化为原义字符串内容,但您需要转义嵌入-ArgumentList个字符。为"(原文如此),以使目标PowerShell实例能够使用(在Windows PowerShell中暗示)\"选项正确识别它们。

  • 由于-Command仅将所有后续参数以空格分隔为,然后将结果字符串解释为PowerShell源代码,因此通常最好传递一个单个字符串,以确保概念清晰。