当前位置:  开发笔记 > 编程语言 > 正文

设置PowerShell脚本以执行自动执行

如何解决《设置PowerShell脚本以执行自动执行》经验,为你挑选了2个好方法。

我有几行PowerShell代码,我想将其用作自动脚本.我希望它能够工作的方式是能够使用以下选项之一调用它:

    一个打开PowerShell的命令行,执行脚本并关闭PowerShell(这将用于全局构建例程)

    我可以双击以运行上面的文件(我会在手动测试构建过程的组件时使用此方法)

我一直在线阅读PowerShell文档,虽然我可以找到很多脚本,但我一直无法找到如何做我需要的说明.谢谢您的帮助.



1> Jay Bazuzi..:

来自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



2> Matt Hamilto..:

将脚本保存为.ps1文件并使用powershell.exe启动它,如下所示:

powershell.exe .\foo.ps1

确保指定脚本的完整路径,并确保已将执行策略级别设置为至少"RemoteSigned",以便可以运行未签名的本地脚本.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有