是否可以在Powershell中创建命名空间环境变量? (例如$ custom:JSenv)

时间:2018-09-24 17:22:09

标签: powershell powershell-core

我想知道是否可以为项目特定的环境变量(例如PSDriveEnv:等)创建$custom:JSenv之类的$custom:root,而不是填充{{1 }} PSDrive。

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

创建custom: PSDrive是否达到目的的正确方法?

2 个答案:

答案 0 :(得分:0)

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

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

但是,这实际上确实为您提供了一种调用Env:驱动器的不同方法,因为它们使用相同的提供程序,并且提供程序没有作用域的概念。

答案 1 :(得分:0)

:要获得所需的内容,您必须实现自己的PowerShell [驱动器]提供程序,该提供程序也实现IContentCmdletProvider interface,因为{ {1}}(或$<drive>:<path>)是语法糖,称为命名空间符号-用于以下命令:
${<drive>:<path>}

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


关于您尝试过的事情

虽然可以基于现有的提供程序定义自定义驱动器,但是该驱动器将始终反映该提供程序的项目,而无法定义自己的驱动器。

换句话说:

Get-Content -Path <drive>:<path>

只会使驱动器New-PSDrive -Name custom -PSProvider Environment -Root '' 成为custom:驱动器的别名。
尽管您可以将自定义项定义为环境变量,但它们会在现有项的基础上另外显示


实施自定义PowerShell驱动器[提供程序]: