2009-12-30 13 views
6

Po prostu zaczynamy z PowerShell. Byłem uruchomiony pliki DOS .bat w moich zdarzeniach budowania postów w VS i chciał przejść do PowerShell. Pliki nietoperzy były łatwe ... CALL something.bat. Próbowałem to zrobić z plikiem PowerShell PS1 i moim prób i erroring mnie do następnego (pierwszą rzeczą, która pracowała ... próbuje wszystkie proste rzeczy, po pierwsze, oczywiście):Najłatwiejsza/najkrótsza komenda do uruchomienia skryptu PowerShell jako zdarzenia budowania w Visual Studio

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

Czy istnieje skrócona wersja tego? Myślę, że jedyną rzeczą, która naprawdę mnie niepokoi to nadmiarowe wywołania do pliku wykonywalnego powershell, ale to jest prawdopodobnie wymagane tylko dlatego, że pliki .ps1 są domyślnie otwierane w notatniku na moim komputerze (i powinienem zachować redundancję dla wdrożenia w innych systemach, więc " nie polegać na domyślnym programie dla typu pliku). W każdym razie, jeśli tu jest niepotrzebna redundancja, chciałbym to wiedzieć.

Jestem nowy w PowerShell, więc wszelkie związane z nim spostrzeżenia są zawsze mile widziane.

Odpowiedz

3

Według MSN, to powinno działać ładny:

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

Edit: Znaleziony this

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

Wiem ... i miałoby to sens. Ale nawet kiedy ponownie spróbuję, to nie działa. – Rich

+0

@Rich: Znalazłem inny artykuł, spróbuj tego. – Bobby

+0

Tak. Widziałem to drugie i próbowałem, ale musiałem coś pomylić, bo teraz działa dobrze. Dzięki. – Rich

4

Użyłem PowerShell jako post-build zdarzenia w przeszłości; teraz opieram się na używaniu psake (super prosty system kompilacji) lub po prostu uruchamiam surowy skrypt PowerShell. Post-buildowe zdarzenia stają się niechlujne, nieelastyczne i mają niewiele zalet w porównaniu z robieniem tego samego w skryptach kompilacji.

EDIT: Jeśli nadal jesteś zainteresowany wykorzystaniem skryptu post-build, ja odpowiedział na pytanie zanim here

1

nie sprawdzałem żadnych MSDN, to po prostu działa:

powershell $(ProjectDir)test.ps1 

Btw. nie zapomnij ustawić uprawnień uruchamiania dla dwóch wersji PowerShell - 32-bitowych i 64-bitowych.

0

byłem jakby zadowolony z eleganckim powershell $(ProjectDir) rozwiązania szczegółowo tutaj, ale wpadłem na problemy podczas uruchamiania/zatrzymywania Baseny IIS aplikacji poprzez WebAdministration zaczynają-WebAppPool i stop-WebAppPool

miałem lepsze powodzenie z:

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

tj

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

powodem okazała się mieszanie architekturach, jak szczegółowy here (w sekcji "Używanie skryptów Windows PowerShell do automatyzacji zadań w Visual Studio"):

To ważne, aby korzystać z wirtualnego ścieżkę% windir% \ SysNative i nie rzeczywista ścieżka C: \ Windows \ System32. Powodem tego jest , że Visual Studio 2010 jest aplikacją 32-bitową, która musi wywołać 64-bitową wersję powershell.exe, aby pomyślnie załadować przystawkę Microsoft.SharePoint.Powershell .

Powiązane problemy