刚开始使用PowerShell。我在VS的后期构建事件中运行DOS .bat文件,并希望升级到PowerShell。蝙蝠文件很简单...... CALL something.bat
。我尝试用PowerShell ps1文件做到这一点,我的试错让我得到了以下内容(第一件有用的东西......首先尝试了所有简单的事情,显然):
powershell -command "& {(powershell '$(ProjectDir)test.ps1')}"
是否有速记版本?我认为真正困扰我的唯一事情是对powershell可执行文件的冗余调用,但这可能只是因为.ps1文件在我的机器上默认打开记事本(我应该保留冗余以便在其他系统上部署所以我' m不依赖于文件类型的默认程序)。无论如何,如果这里有不必要的冗余,我很想知道。
我是PowerShell的新手,所以任何相关的见解总是受到赞赏。
答案 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
我在以下方面取得了更大的成功:
%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管理单元。