模块内的新PSDrive不起作用

时间:2014-11-18 12:22:15

标签: powershell powershell-v3.0

我有一个自动加载的模块,我将日常功能和变量放在这里。

当我开始PowerShell会话时希望PSDrive始终在这里,在MyPSModule的最开始我打电话:

$script_directory = 'D:\scripts\'
New-PSDrive -Name Scripts -root $script_directory -PSProvider FileSystem

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

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

有什么问题?当我的模块加载时创建了PSDrive,我应该怎么办?

1 个答案:

答案 0 :(得分:6)

使用值为Scope

的参数global
  

-Scope

     

指定驱动器的范围。有效值为“全局”,“本地”,   或“脚本”,或相对于当前范围的数字(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

Scop参数说明:

  

全局: Windows PowerShell启动时生效的范围。   Windows PowerShell时存在的变量和函数   已在全局范围内创建了启动。这包括自动   变量和偏好变量。这还包括变量,   别名以及Windows PowerShell配置文件中的功能。

     

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

     

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

     

私有:私有范围内的项目无法在当前范围之外查看   范围。您可以使用私有范围来创建私有版本   另一个范围内具有相同名称的项目。