我有几行PowerShell代码,我想将其用作自动脚本.我希望它能够工作的方式是能够使用以下选项之一调用它:
一个打开PowerShell的命令行,执行脚本并关闭PowerShell(这将用于全局构建例程)
我可以双击以运行上面的文件(我会在手动测试构建过程的组件时使用此方法)
我一直在线阅读PowerShell文档,虽然我可以找到很多脚本,但我一直无法找到如何做我需要的说明.谢谢您的帮助.
来自http://blogs.msdn.com/b/jaybaz_ms/archive/2007/04/26/powershell-polyglot.aspx
如果你愿意用一点CMD来玷污你漂亮的PowerShell脚本,你可以使用PowerShell-CMD多语言技巧.将PowerShell脚本另存为.CMD文件,并将此行放在顶部:
@PowerShell -ExecutionPolicy Bypass -Command Invoke-Expression $('$args=@(^&{$args} %*);'+[String]::Join(';',(Get-Content '%~f0') -notmatch '^^@PowerShell.*EOF$')) & goto :EOF
如果你需要支持引用的参数,那么版本更长,也允许注释.(注意双@的不寻常的CMD评论技巧).
@@:: This prolog allows a PowerShell script to be embedded in a .CMD file. @@:: Any non-PowerShell content must be preceeded by "@@" @@setlocal @@set POWERSHELL_BAT_ARGS=%* @@if defined POWERSHELL_BAT_ARGS set POWERSHELL_BAT_ARGS=%POWERSHELL_BAT_ARGS:"=\"% @@PowerShell -ExecutionPolicy Bypass -Command Invoke-Expression $('$args=@(^&{$args} %POWERSHELL_BAT_ARGS%);'+[String]::Join(';',$((Get-Content '%~f0') -notmatch '^^@@'))) & goto :EOF
将脚本保存为.ps1文件并使用powershell.exe启动它,如下所示:
powershell.exe .\foo.ps1
确保指定脚本的完整路径,并确保已将执行策略级别设置为至少"RemoteSigned",以便可以运行未签名的本地脚本.