模块内的新PSDrive不起作用

Ste*_*and 4 powershell powershell-3.0

我有一个自动加载的模块,我把我的日常功能和变量放在那里.

我希望当我启动PowerShell会话时,PSDrive总是在这里,在MyPSModule的最开始,我调用:

$script_directory = 'D:\scripts\'
New-PSDrive -Name Scripts -root $script_directory -PSProvider FileSystem
Run Code Online (Sandbox Code Playgroud)

但是,在我打开一个新的PowerShell环境后,我的模块已加载:Get-PSDrive没有列出我的驱动器.(我确定我的模块已加载,我调用了它的一些功能,我甚至重新导入-Force,并且Import-Module -Verbose没有显示任何错误)

我必须手动打电话:New-PSDrive -Name Scripts -root 'D:\scripts\' -PSProvider FileSystem.只有在这种情况下才会Get-PSDrive列出我的驱动器.

怎么了 ?当我的模块加载时创建了PSDrive,我应该怎么做?

dhc*_*cgn 6

使用参数Scopeglobal

-范围

指定驱动器的范围.有效值为"Global","Local"或"Script",或者是相对于当前范围的数字(0到范围的数量,其中0是当前范围,1是其父级)."本地"是默认值.有关详细信息,请参阅about_Scopes(http://go.microsoft.com/fwlink/?LinkID=113260).

$script_directory = 'D:\scripts\'
New-PSDrive -Name Scripts -root $script_directory -PSProvider FileSystem  -Scope global
Run Code Online (Sandbox Code Playgroud)

Scop参数说明:

全局: Windows PowerShell启动时生效的范围.在全局范围内创建了Windows PowerShell启动时存在的变量和函数.这包括自动变量和首选变量.这还包括Windows PowerShell配置文件中的变量,别名和函数.

本地: 当前范围.本地范围可以是全局范围或任何其他范围.

脚本: 脚本文件运行时创建的范围.只有脚本中的命令在脚本范围内运行.对于脚本中的命令,脚本范围是本地范围.

私有:私有范围内的项目不能在当前范围之外查看.您可以使用私有作用域在另一个作用域中创建具有相同名称的项的私有版本.