簡體   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