我想知道是否可以为我的项目特定的环境变量创建一个PSDrive
like ,而不是填充PSDrive。Env:
$custom:JSenv
$custom:root
Env:
我尝试使用New-PSDrive -Name custom -PSProvider Environment
. 我期待看到custom:
驱动器。但是,在实际输出中没有任何变化。
创建Environment
PSDrive 是实现目的的正确方法吗?
我想知道是否可以为我的项目特定的环境变量创建一个PSDrive
like ,而不是填充PSDrive。Env:
$custom:JSenv
$custom:root
Env:
我尝试使用New-PSDrive -Name custom -PSProvider Environment
. 我期待看到custom:
驱动器。但是,在实际输出中没有任何变化。
创建Environment
PSDrive 是实现目的的正确方法吗?
New-PSDrive
cmdlet 需要一个Root
参数。我无法复制您的问题:
PS /> $null = New-PSDrive -Name custom -PSProvider Environment -Root ''
PS /> Get-Item -Path custom:
# => environment variables
然而,所有这一切确实为您提供了一种调用Env:
驱动器的不同方法,因为它们使用相同的提供程序,并且提供程序没有范围的概念。
否:要获得您想要的,您必须实现自己的 PowerShell [drive] 提供程序,该提供程序也实现了IContentCmdletProvider
interface,因为$<drive>:<path>
(or ${<drive>:<path>}
) 是语法糖 - 称为命名空间表示法- 用于以下命令:
Get-Content -Path <drive>:<path>
有关更多信息,请参阅底部部分。
至于你尝试了什么:
虽然可以基于现有提供者定义自定义驱动器,但该驱动器将始终反映该提供者的项目,而没有任何定义您自己的能力。
换句话说:
New-PSDrive -Name custom -PSProvider Environment -Root ''
只会使驱动器成为驱动器custom:
的别名env:
。
虽然您可以将自定义条目定义为环境变量,但它们会在预先存在的条目之外显示。
编写您自己的 [驱动器] 提供程序需要编译代码,因此您无法在 PowerShell 本身中实现自定义驱动器。
从 Windows PowerShell v5.1 / PowerShell Core 6.1.0 开始,实现提供程序非常重要,但正在考虑为未来的 PowerShell Core版本简化这一点。
但是,有第三方帮助模块可以极大地简化流程,并允许您在 PowerShell 代码中实现自定义驱动器。
注意:我尚未验证您的特定用例是否可以实现。
Simplex : PS Gallery 链接-源代码和文档- 易于使用的 DSL,但并非所有功能都公开。
SHiPS : PS Gallery 链接-源代码和文档- 更复杂,但功能更全面。