How do I run a PowerShell script from Visual Studio 2010
If I have a .ps file in Visual Studio, how do 开发者_运维知识库I go about running it within the context of the project?
I did this by adding a context menu item linked to an external tool:
Add an "External Tool". Go to Tools > External Tools. Add a new one with these settings:
- Title:
Run with Powershell
- Command:
powershell.ex
- Arguments:
-ExecutionPolicy RemoteSigned -File "$(ItemPath)"
- Initial Directory:
$(ItemDir)
- Check "
Use Output Window
" - If you plan to use scripts that require arguments, check "
Prompt For Arguments
"
Take note of the position your tool is in the list (1,2, etc...) Click OK.
- Now go to
Tools
>Customize
,Commands
tab, selectContext Menu
orToolbar
, and choose "Project and Solution Context Menus | Item". - Click "
Add Command...
". - Choose
Tools
category, and choose "External Command X
" wherex
is the position your tool was in the list (index starts with 1, not 0). - Click
OK
. - Move it to the position you want in the menu, and click "Modify Selection" to give it a friendly name,
- add keyboard shortcuts, etc..
- Click Close.
Right click your .ps1 file in the solution explorere and enjoy. (NOTE: I also did this for cmd.exe to run .bat files.)
Not sure what exactly you mean by "from within the context of the project" but you can:
Create a
Process
Process p = new Process();
Then set the command of the process to be:
powershell.exe YourScriptName.ps1
This works if you just need to run the script.
The best way to do this is to install the PowerGUI extension for Visual Studio 2010
- http://visualstudiogallery.msdn.microsoft.com/01516103-d487-4a7e-bb40-c15ec709afa3/
One of the features of this extension is an integrated powershell tool window. This has access to automation objects like DTE
via $EnvDTE
and will provide a good environment for running the script against the project
You should also look at StudioShell, which provides a deep integration of the DTE in a custom PowerShell host.
精彩评论