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

时间:2009-12-30 16:33:50

标签: windows visual-studio powershell

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

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

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

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

4 个答案:

答案 0 :(得分:4)

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

编辑:如果您仍然对使用构建后脚本感兴趣,我在here

之前回答了问题

答案 1 :(得分:3)

根据MSN,这应该很好用:

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

修改:找到this

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

答案 2 :(得分:1)

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

powershell $(ProjectDir)test.ps1

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

答案 3 :(得分:0)

我对此处详述的优雅powershell $(ProjectDir)解决方案感到满意,但是在通过WebAdministration的Start-WebAppPool和Stop-WebAppPool

启动/停止IIS应用程序池时遇到了问题

我在以下方面取得了更大的成功:

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

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

原因是混合了体系结构,如详细here(在#34;使用Windows PowerShell脚本在Visual Studio中使用Windows PowerShell脚本自动执行")

  

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