views:

275

answers:

2

Just getting started with PowerShell. I was running DOS .bat files in my post build events in VS and wanted to graduate up to PowerShell. Bat files were easy...CALL something.bat. I tried to do that with a PowerShell ps1 file and my trial-and-erroring got me to the following (first thing that worked...tried all the simple things first, obviously):

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

Is there a shorthand version of this? I think the only thing that really bothers me is the redundant calls to the powershell executable, but that's probably only required because .ps1 files open in notepad by default on my machine (and I should keep the redundancy for deployment on other systems so I'm not reliant on the default program for a file type). Anyway, if there's unnecessary redundancy here, I'd love to know.

I'm very new to PowerShell, so any related insight is always appreciated.

+1  A: 

According to the MSN, this should work nice:

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

Edit: Found this

powershell.exe "& ""$(ProjectDir)test.ps1"""
Bobby
I know...and it would make perfect sense. But, even when I try it again now, it doesn't work.
Rich
@Rich: I found another article, please try that one.
Bobby
Yep. I had seen that other one and tried it, but I must have mistyped something because it works fine now. Thanks.
Rich
+2  A: 

I've used PowerShell as a post-build event in the past; now I lean towards using psake (super simple build system) or just running a raw PowerShell script. Post-build events get messy, are inflexible, and have few advantages over doing the same thing in a build script.

EDIT: If you are still interested in using a post-build script, I've answered the question before here

Peter Seale