首页 文章

Powershell:从cmdlet中获取默认目录

提问于
浏览
1

我正在写一个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,它在他们切换到的目录上运行 - 就像你期望的那样从旧的命令控制台工作 .

3 回答

  • -1

    您可能希望尝试此操作,CurrentLocation.Path也可以指向其他提供程序路径,例如注册表 .

    this.SessionState.Path.CurrentFileSystemLocation.Path
    
  • 1

    你知道,我似乎总是在发布后发现它 - 无论我在寻找SO之前花了多长时间才看到它!

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

    this.SessionState.Path.CurrentLocation.Path
    

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

  • 4

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

相关问题