我正在下面运行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脚本中运行此命令。必须像上面的代码片段一样内联执行。
答案 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=