【发布时间】:2014-07-07 15:57:56
【问题描述】:
我需要通过 powershell 将逗号分隔的参数传递给批处理文件,但似乎无法使其工作。如果我直接在 powershell 中调用批处理文件,以下是我调用它的方式:
PS C:\Users\Mike> type zz.cmd
@echo off
echo/* = [%*}
echo/1 = [%1]
echo/2 = [%2]
echo/3 = [%3]
pause
PS C:\Users\Mike> cmd /c zz "q,w,e"
* = [q,w,e}
1 = [q]
2 = [w]
3 = [e]
Press any key to continue . . .
如果我使用 cmd /c zz """q,w,e""" 或 cmd /c zz '"q,w,e"' 我将得到 arg 1 的 "q,w,e"。这个很好。但是,我必须使用 Invoke-Command 调用 powershell。执行此操作时,脚本不起作用:
powershell.exe Invoke-Command -ScriptBlock { "cmd /c E:\\npoess\\oo\\WoD\\zzz" '"q,w,e"'}
知道如何从命令提示符获取 powershell 调用以获取“q,w,e”作为批处理文件的一个参数吗?
谢谢,
-迈克
【问题讨论】:
-
为什么您调用
powershell.exe的唯一目的是运行cmd.exe?是什么阻止您直接运行cmd.exe?添加间接层无助于完成任务。 -
“但是,我必须使用 Invoke-Command 调用 powershell。”为什么?
-
我需要使用 powershell 来传递用户凭据
-
我也有和alroc一样的问题。我认为您需要更多地解释您的目标,而不是您尝试的解决方案。
-
“我们的用户没有执行脚本的权限” - 你的意思是 PowerShell 执行策略阻止你在 PowerShell 中运行脚本,还是其他什么?我认为你需要澄清你想做什么,而不是你认为它需要怎么做。
标签: powershell