繁体   English   中英

在Visual Studio中作为构建事件运行PowerShell脚本的最简单/最短命令

[英]Easiest/shortest command to run a PowerShell script as a build event in Visual Studio

刚刚开始使用PowerShell。 我在VS的后期构建事件中运行DOS .bat文件,并希望升级到PowerShell。 蝙蝠文件很简单...... CALL something.bat 我尝试用PowerShell ps1文件做到这一点,我的试错法让我得到了以下内容(首先有效的方法......首先尝试了所有简单的事情,显然):

powershell -command "& {(powershell '$(ProjectDir)test.ps1')}"

这是一个速记版本吗? 我认为真正困扰我的唯一事情是对powershell可执行文件的冗余调用,但这可能只是因为.ps1文件在我的机器上默认打开记事本(我应该保留冗余以便在其他系统上部署所以我' m不依赖于文件类型的默认程序)。 无论如何,如果这里有不必要的冗余,我很想知道。

我是PowerShell的新手,所以任何相关的见解总是受到赞赏。

我过去曾使用PowerShell作为后期制作活动; 现在我倾向于使用psake (超级简单的构建系统)或只是运行原始的PowerShell脚本。 构建后事件变得混乱,不灵活,并且与在构建脚本中执行相同操作相比几乎没有什么优势。

编辑:如果你仍然有兴趣使用后期构建脚本,我在之前已经回答了这个问题

根据MSN ,这应该很好:

powershell.exe "$(ProjectDir)test.ps1"

编辑:发现这个

powershell.exe "& ""$(ProjectDir)test.ps1"""

我没有检查任何MSDN,它只是工作:

powershell $(ProjectDir)test.ps1

顺便说一句。 不要忘记为PowerShell的两个版本设置运行权限 - 32位和64位。

我对这里详细介绍的优雅powershell $(ProjectDir)解决方案感到满意,但是在通过WebAdministration的Start-WebAppPool和Stop-WebAppPool启动/停止IIS App Pool时遇到了问题。

我有更好的成功:

%WINDIR%\SysNative\WindowsPowerShell\v1.0\powershell.exe 

%WINDIR%\SysNative\WindowsPowerShell\v1.0\powershell.exe -Command "$(ProjectDir)Powershell\Stop-AppPool.ps1"

究其原因竟然是混合架构,详见这里 (参见“使用Windows PowerShell脚本自动化在Visual Studio中的任务”):

使用%WINDIR%\\ SysNative的虚拟路径而不是C:\\ Windows \\ System32的实际路径非常重要。 原因是Visual Studio 2010是一个32位应用程序,需要调用64位版本的powershell.exe才能成功加载Microsoft.SharePoint.Powershell管理单元。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM