Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

c#

powershell

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

like image 665
touch my body Avatar asked Jan 08 '23 20:01

touch my body


2 Answers

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.

like image 193
Tomislav Avatar answered Jan 10 '23 08:01

Tomislav


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

like image 33
Hamlet Hakobyan Avatar answered Jan 10 '23 09:01

Hamlet Hakobyan