2

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

4

3 回答 3

5

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

this.SessionState.Path.CurrentFileSystemLocation.Path
于 2013-11-07T13:53:30.657 回答
1

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

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

this.SessionState.Path.CurrentLocation.Path

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

于 2013-11-07T01:27:36.590 回答
-1

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

于 2013-11-07T01:17:16.323 回答