c# - 将 PowerShell 参数传递给 Process.Start
问题描述
我正在尝试将我的一些 bat 脚本转换为 C#。除了 PowerShell 执行行之外,我已经移植了整个程序。
为了简单起见,我试图从 cmd 调用 PowerShell 命令。我可以这样做,但它不采用与 PowerShell 命令一起使用的复杂参数和参数。
如果我直接从 cmd 或 bat 文件运行,这是命令。
powershell -Command "& {asnp 'citrix*'; remove-BrokerTag -Name 'Somename' -Machine 'domain\server' -AdminAddress 'SomeServer';}"
我正在使用此代码来调用 cmd 并运行我的 powershell 命令。
string strCmdText;
strCmdText = "'/C powershell " + "-Command " + "&" + " { asnp 'citrix*'; add - BrokerTag - Name 'Somename' - Machine 'domain\server'" + (listboxvariable) + " - AdminAddress 'ServerXX'; }'" + " & pause";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
我收到此错误 “由于缺少参数而无法处理命令。命令必须遵循 -Command。”
如您所见,此 PowerShell 命令中有很多参数。
有没有更简单的方法来做到这一点?或者我只是缺少一些简单的东西?
解决方案
在您原来的 PowerShell 行中,Command
被双引号括起来。
尝试这个:
strCmdText = "/C powershell " + "-Command " + "\"& " + "{ asnp 'citrix*'; add - BrokerTag - Name 'Somename' - Machine 'domain\server'" + (listboxvariable) + " - AdminAddress 'ServerXX'; }\"" + " & pause";
请注意使用\"
转义序列来添加原始命令行中缺少的双引号。
推荐阅读
- python - 通过比较列中的字典值来收集 DataFrame 行
- regex - 按请求 URI 查看过滤器
- typescript - 未找到 Prisma 客户端架构,nextjs 应用程序
- angular - 如何将我的 Angular 应用程序部署到不同的 firebase 环境?
- javascript - KaTeX 的官方入门模板不起作用
- ssh - scp 远程到本地权限被拒绝
- c# - C# 检查数组是否“满”
- java - 如何让 JUnit 测试与 Gradle 项目一起运行?
- firebase - Firestore Flutter 中的 userId 为 null
- html - XPath如何获取段落标签中的所有文本及其所有内部嵌套文本,例如粗体字