我正在尝试在cmd命令行中运行PowerShell脚本.有人给我一个例子,它有效:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
但问题是我的PowerShell脚本有输入参数所以我试过但不起作用:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' "
错误是:
术语'D:\ Work\SQLExecutor.ps1 -gettedServerName"MY-PC"'无法识别为cmdlet函数的名称,
等待帮助!谢谢!
您需要将参数与文件路径分开:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 ' -gettedServerName 'MY-PC'"
使用File参数和位置参数可以简化语法的另一个选项:
powershell.exe -noexit -file "D:\Work\SQLExecutor.ps1" "MY-PC"
我想在Shay Levy的正确答案中添加以下内容:如果创建一些批处理脚本run.cmd
来启动powershell脚本,则可以使您的生活更轻松:
@echo off & setlocal set batchPath=%~dp0 powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" "MY-PC"
SQLExecutor.ps1
从现在开始,将其置于相同的路径,您只需双击即可运行它 run.cmd
。
注意:
如果在run.cmd批处理中需要命令行参数,只需将它们作为%1
... 传递%9
(或用于%*
传递所有参数)到powershell脚本,即
powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" %*
该变量batchPath
包含批处理文件本身的执行路径(这就是表达式%~dp0
的用途)。因此,您只需将powershell脚本放在与调用批处理文件相同的路径中即可。
尝试一下:
powershell.exe -noexit D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC"