【问题标题】:Invoke-Command Powershell parameter issueInvoke-Command Powershell 参数问题
【发布时间】: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


【解决方案1】:

这个没有所有引号的调用命令适用于为我传递 a : 我认为变量周围的引号将集合作为字符串而不是单独的值传递。

Invoke-Command -ScriptBlock {
     cmd /c C:\scripts\zz.cmd q,w,e
     }

【讨论】:

  • 我试过 powershell.exe Invoke-Command -ScriptBlock { cmd /c C:\scripts\zz.cmd q,w,e } 并没有通过集合。
猜你喜欢
  • 2014-10-13
  • 2018-02-28
  • 2015-03-29
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
相关资源
最近更新 更多