Powershell脚本报价问题

时间:2019-02-27 11:08:30

标签: powershell

我正在下面运行Powershell脚本。注意,GetProxy()中的参数在单引号内。如果我使用双引号而不是单引号,则脚本不会运行。 这样行得通

c:\>powershell.exe  IEX(Invoke-WebRequest http://example.com/example.html -ProxyUseDefaultCredentials  -Proxy $([System.Net.WebRequest]::GetSystemWebProxy().GetProxy('http://example.com/').Absoluteuri))

这不起作用

c:\>powershell.exe  IEX(Invoke-WebRequest http://example.com/example.html -ProxyUseDefaultCredentials  -Proxy $([System.Net.WebRequest]::GetSystemWebProxy().GetProxy("http://example.com/").Absoluteuri))

有人知道如何在不使用GeProxy()内使用单引号的情况下运行此脚本吗?

请注意,我无法在ps1脚本中运行此命令。必须像上面的代码片段一样内联执行。

1 个答案:

答案 0 :(得分:0)

就像@vonPryz所说的那样,您可以尝试使用单引号将工作命令编码到Base64中,然后使用编码后的字符串运行powershell.exe,首先在powershell中运行它:

[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("'IEX(Invoke-WebRequest http://example.com/example.html -ProxyUseDefaultCredentials  -Proxy $([System.Net.WebRequest]::GetSystemWebProxy().GetProxy('http://example.com/').Absoluteuri))'"))

然后从cmd输出并运行它:

powershell.exe -encodedCommand JwBJAEUAWAAoAEkAbgB2AG8AawBlAC0AVwBlAGIAUgBlAHEAdQBlAHMAdAAgAGgAdAB0AHAAOgAvAC8AZQB4AGEAbQBwAGwAZQAuAGMAbwBtAC8AZQB4AGEAbQBwAGwAZQAuAGgAdABtAGwAIAAtAFAAcgBvAHgAeQBVAHMAZQBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgACAALQBQAHIAbwB4AHkAIABoAHQAdABwADoALwAvAGUAeABhAG0AcABsAGUALgBjAG8AbQAvACkAJwA=