我正在写一个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 回答
您可能希望尝试此操作,CurrentLocation.Path也可以指向其他提供程序路径,例如注册表 .
你知道,我似乎总是在发布后发现它 - 无论我在寻找SO之前花了多长时间才看到它!
所以,我的cmdlet继承自PsCmdlet . 我发现我可以得到我想要的路径
(其中“this”是继承自PsCmdlet的cmdlet类)
试试
Get-Location
cmdlet . 它应该是脚本的当前执行位置,而不是powershell主机启动文件夹 .