1

我想知道是否可以为我的项目特定的环境变量创建一个PSDrivelike ,而不是填充PSDrive。Env:$custom:JSenv$custom:rootEnv:

我尝试使用New-PSDrive -Name custom -PSProvider Environment. 我期待看到custom:驱动器。但是,在实际输出中没有任何变化。

创建EnvironmentPSDrive 是实现目的的正确方法吗?

4

2 回答 2

0

New-PSDrivecmdlet 需要一个Root参数。我无法复制您的问题:

PS /> $null = New-PSDrive -Name custom -PSProvider Environment -Root ''
PS /> Get-Item -Path custom:
# => environment variables

然而,所有这一切确实为您提供了一种调用Env:驱动器的不同方法,因为它们使用相同的提供程序,并且提供程序没有范围的概念。

于 2018-09-24T17:26:20.880 回答
0

:要获得您想要的,您必须实现自己的 PowerShell [drive] 提供程序,该提供程序也实现了IContentCmdletProviderinterface,因为$<drive>:<path>(or ${<drive>:<path>}) 是语法糖 - 称为命名空间表示法- 用于以下命令:
Get-Content -Path <drive>:<path>

有关更多信息,请参阅底部部分。


至于你尝试了什么:

虽然可以基于现有提供者定义自定义驱动器,但该驱动器将始终反映该提供者的项目,而没有任何定义您自己的能力。

换句话说:

New-PSDrive -Name custom -PSProvider Environment -Root ''

只会使驱动器成为驱动器custom:的别名env:
虽然您可以将自定义条目定义为环境变量,但它们会预先存在的条目之外显示。


实现自定义 PowerShell 驱动器 [提供者]:

于 2018-09-24T19:19:18.640 回答