我有一个自动加载的模块,我将日常功能和变量放在这里。
当我开始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,我应该怎么办?
答案 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中的命令 脚本,脚本范围是本地范围。
私有:私有范围内的项目无法在当前范围之外查看 范围。您可以使用私有范围来创建私有版本 另一个范围内具有相同名称的项目。