如何在 C# 代码中从 powershell 检索 pwd 的值

How to retrieve value of pwd from powershell in c# code

我至少找了 3 个小时的答案,但没有成功。
到处都是代码片段,我不知道如何将它们连接在一起。

我想达到的目标:
我正在创建 dotnet-tool,我需要在其中处理当前工作目录(使用 PS 中的 pwd 命令打印的值)。 Dotnet 工具将安装在默认目录 C:\Users\Samuel\.dotnet\.store\myTool... 但可以使用 dotnet tool run myTool 在 PS 中的任何目录中调用命令。

例如:
在 PS 我在:C:\Users\Samuel\AxisRepos> 和我 运行 dotnet tool run myTool
在这种情况下,我想在 C# 代码中检索 C:\Users\Samuel\AxisRepos 以找出调用了哪个目录命令。

简单地说,我想在我的 dotnet 工具中做这样的事情:

class Program
{
    static void Main(string[] args)
    {
        var pwd = GetPwdFromPowerShell();
    }

    static string GetPwdFromPowerShell()
    {
        string pwd = "";

        // Retrieve current working directory from PS in which dotnet tool was invoked

        return pwd;
    }
}

pwd 只是 Get-Location 的别名,显示当前目录...

从 c# 开始,您可以使用内置的 .net class System.IO.Directory 具体方法 GetCurrentDirectory

所以只需将您的代码更新为:

static string GetPwd()
{
    return System.IO.Directory.GetCurrentDirectory();
}

从 powershell 这将得到相同的结果:

[System.IO.Directory]::GetCurrentDirectory()