Powershell:从cmdlet中获取默认目录

时间:2013-11-07 01:09:40

标签: powershell cmdlets

我正在写一个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 个答案:

答案 0 :(得分:4)

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

this.SessionState.Path.CurrentFileSystemLocation.Path

答案 1 :(得分:1)

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

因此,我的cmdlet继承自PsCmdlet。我发现我可以从

获得我想要的路径
this.SessionState.Path.CurrentLocation.Path

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

答案 2 :(得分:-1)

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