touch my body
touch my body

Reputation: 1713

How to run PowerShell script in C# from relative path?

I'm trying to run a PowerShell script from my C# application. I know how to do so with an absolute path:

    using (PowerShell pshell = PowerShell.Create())
    {
        pshell.AddScript( @"C:\Path\To\Webapp\psScript.ps1" );
        pshell.Invoke();
    }

What I don't know how to do is use a relative path. My psScript.ps1 is located in the same directory as my Visual Studio project, and I'd like to use a relative path (such as ./psScript.ps1), so that when I publish/export my project to different computers, the path to the script doesn't become invalidated

Sooo, how do I use a relative path in the PowerShell.AddScript() method? Any help would be appreciated!

I looked here but this doesn't answer my question: PowerShell: Run command from script's directory

Upvotes: 4

Views: 7004

Answers (2)

Tomislav
Tomislav

Reputation: 3201

Use this:

using (PowerShell pshell = PowerShell.Create())
    {
        string path=System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
        pshell.AddScript( path+"\\psScript.ps1" );
        pshell.Invoke();
    }

This path is always relative to the root folder of your project.

Upvotes: 6

Hamlet Hakobyan
Hamlet Hakobyan

Reputation: 33381

Add your script to project and set Copy to output directory property to Copy always or Copy id newer

Upvotes: 3

Related Questions