【问题标题】:Powershell: Get the default directory from inside a cmdletPowershell:从 cmdlet 中获取默认目录
【发布时间】:2013-11-07 21:53:30
【问题描述】:

我正在编写一个 powershell cmdlet。从我的 cmdlet BeginProcessing() 方法内部,我希望能够检索在调用 cmdlet 时作为默认目录的目录。

示例: 如果用户这样做:

cd \myDirectory
invoke-mycmdlet

我想让我的代码知道默认的 shell 目录是 c:\myDirectory。 当我访问 Environment.CurrentDirectory 时,它总是 c:\windows\system32

我在 SO 上看到过类似的帖子,其中海报需要使用 get-location 从 shell 内部设置 Environment::Current 目录。这对我不起作用。

基本上,我的 cmdlet 做了一些文件系统的事情,我希望用户能够直接 cd\ 进入一个目录,并执行我的 cmdlet,它在他们切换到的目录上运行——就像你一样希望它可以在旧的命令控制台上运行。

【问题讨论】:

    标签: powershell powershell-cmdlet


    【解决方案1】:

    您可能想试试这个,CurrentLocation.Path 也可以指向其他提供程序路径,例如注册表。

    this.SessionState.Path.CurrentFileSystemLocation.Path
    

    【讨论】:

    • 我比我更喜欢你的回答——FTW!
    【解决方案2】:

    你知道,我似乎总是在发布后立即找到它——不管我花了多长时间寻找 SO!

    所以,我的 cmdlet 继承自 PsCmdlet。我发现我可以从中得到我想要的路径

    this.SessionState.Path.CurrentLocation.Path
    

    (其中“this”是一个继承自 PsCmdlet 的 cmdlet 类)

    【讨论】:

      【解决方案3】:

      试试Get-Location cmdlet。它应该是脚本的当前执行位置,而不是 powershell 主机启动文件夹。

      【讨论】:

      • 或者你可以检查$PWD。​​span>
      猜你喜欢
      • 1970-01-01
      • 2020-03-29
      • 2010-12-15
      • 2011-06-23
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 2011-07-16
      相关资源
      最近更新 更多