从Excel VBA运行Powershell命令(而不是脚本)

Tim*_*Tim 9 powershell vba

我搜索了SO,我可以找到很多从VBA运行PowerShell脚本的例子,但我找不到任何运行简单命令的例子.

例如,这有效:

Dim retval As Variant
retval = Shell("PowerShell ""C:\MyScript.ps1""", vbNormalFocus)
Run Code Online (Sandbox Code Playgroud)

但这不是:

Dim retval As Variant
Dim pscmd As String

pscmd = "PowerShell " & _
  Chr(34) & "Get-ScheduledTask" & _
  " -TaskName " & Chr(34) & "My Task" & Chr(34) & _
  " -CimSession MYLAPTOP" & Chr(34)
retval = Shell(pscmd, vbNormalFocus)

Debug.Print pscmd
'pscmd = PowerShell "Get-ScheduledTask -TaskName "My Task" -CimSession MYLAPTOP"
Run Code Online (Sandbox Code Playgroud)

我知道我可以将PS命令写入文件,将其作为脚本执行,然后删除该文件,但这似乎不是很优雅.

Bon*_*ond 10

要运行内联Powershell命令,您可能需要使用-Command参数并用引号括起您的语句.如果在命令中使用单引号,也会更容易.

试试这个:

pscmd = "PowerShell -Command ""{Get-ScheduledTask -TaskName 'My Task' -CimSession MYLAPTOP}"""
Run Code Online (Sandbox Code Playgroud)

  • 谢谢邦德.显然我需要刷新我的PowerShell开关.:/ (2认同)