使PowerShell脚本在全局范围内运行cmdlet

Phi*_*hil 5 powershell

我编写了以下PowerShell脚本:

function Reload-Module ([string]$moduleName) {
    $module = Get-Module $moduleName
    Remove-Module $moduleName -ErrorAction SilentlyContinue
    Import-Module $module
}
Run Code Online (Sandbox Code Playgroud)

此脚本的唯一问题是Import-Module仅适用于该脚本的范围 - 它不会在全局范围内导入该模块.有没有办法让脚本导入一个模块,以便它在脚本完成后保持不变?

注意:像这样的点源:. Reload-Module MyModuleName不起作用.

Joh*_*hnL 5

从Powershell帮助:

-Global [<SwitchParameter>]
Imports modules into the global session state so they are available to all commands in the session. By 
default, the commands in a module, including commands from nested modules, are imported into the 
caller's session state. To restrict the commands that a module exports, use an Export-ModuleMember 
command in the script module.

The Global parameter is equivalent to the Scope parameter with a value of Global.


Required?                    false
Position?                    named
Default value                False
Accept pipeline input?       false
Accept wildcard characters?  false
Run Code Online (Sandbox Code Playgroud)

v3还添加了-Scope参数,这更常见:

-Scope <String>
Imports the module only into the specified scope.

Valid values are:

-- Global: Available to all commands in the session. Equivalent to the 
Global parameter.

-- Local: Available only in the current scope.

By default, the module is imported into the current scope, which could be 
a script or module.

This parameter is introduced in Windows PowerShell 3.0.

Required?                    false
Position?                    named
Default value                Current scope
Accept pipeline input?       false
Accept wildcard characters?  false
Run Code Online (Sandbox Code Playgroud)

注意:以上帮助代码段来自v3.0,这是我在系统上安装的内容.可从http://msdn.microsoft.com/en-us/library/windows/desktop/dd819454.aspx获取v2.0帮助.如果可以的话,我衷心建议您使用PowerShell v3.0,如果只是因为新的ISE.