从Powershell中删除Microsoft.Powershell.Utility模块

时间:2018-11-05 21:24:12

标签: windows powershell

我正在尝试通过Remove-Module从powershell中删除模块Microsoft.Powershell.Utility。该命令成功执行,但是之后,我仍然可以使用该模块中的命令,例如Format-Hex。我想念什么?我附上了显示行为的屏幕截图

enter image description here

我的环境是Windows 10 Home。

1 个答案:

答案 0 :(得分:5)

正如Ben所述,卸载模块Microsoft.Powershell.Utility是不明智的,因为它包含许多重要的cmdlet (请参见下面的列表)。

自动重新显示该模块命令的原因是PowerShell的module auto-loading feature ,它会根据需要自动加载(导入)$env:PSModulePath 中列出的目录中的模块

例如,可以通过将$PSModuleAutoLoadingPreference首选项变量设置为None来防止自动加载。

请注意对于name conflicts -如果多个模块包含相同名称的命令:

  • 导入的所有模块 last “都胜”-除非您使用Import-Module -NoClobber,否则导入将失败。

  • 还可以使用特定于成员类型的-Cmdlet-Function-Alias和{{ 1}}参数。

  • 您可以使用-Variable在导入的成员上附加前缀,以使它们的名称唯一,对于cmdlet和函数,它们的名称要在 noun 部分之前;例如,Import-Module -Prefix会将名为Import-Module -Prefix Bar ...的cmdlet重命名为Get-Foo)。

  • 最后,如果存在重复的名称,则可以通过以Get-BarFoo的形式在模块名称前添加成员名称来消除歧义。例如<ModuleName>\<command>


自Windows PowerShell 5.1开始,模块Microsoft.PowerShell.Utility\Format-Hex随附的cmdlet列表:

Microsoft.Powershell.Utility