使用#Requires -Modules加载模块时的动词警告

时间:2018-03-14 17:15:02

标签: powershell

我有一个以:

开头的脚本
#Requires -Modules ActiveDirectory, Microsoft.Online.SharePoint.PowerShell

除了Sharepoint PS模块抛出动词警告外,这一切都很好,花花公子:

  

警告:模块“Microsoft.Online.SharePoint.PowerShell”中某些导入命令的名称包括   未经批准的动词,可能会使它们不易被发现。要查找具有未批准动词的命令,请运行   使用Verbose参数再次使用Import-Module命令。有关已批准动词的列表,请键入Get-Verb。

我想在脚本中使用#Requires -Modules标头但是禁止警告。

我知道在运行脚本之前有一些方法可以抑制shell中的所有警告,但是想知道是否有更好的方法在脚本中执行它。

2 个答案:

答案 0 :(得分:1)

我不确定这样的事情是否可行:

$OriginalWarningPreference = $WarningPreference
$WarningPreference = 'SilentlyContinue'
#Requires -Modules ActiveDirectory, Microsoft.Online.SharePoint.PowerShell
$WarningPreference = $OriginalWarningPreference

或者,您可以牺牲#Requires的一些功能并执行此操作:

#Requires -Modules ActiveDirectory
Import-Module -Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking -ErrorAction Stop

答案 1 :(得分:0)

一个相当偷偷摸摸的解决方法是仅对模块使用#requires,不产生警告并使用

if (-not (get-module Microsoft.Online.SharePoint.PowerShell)) {
  Import-Module Microsoft.Online.SharePoint.PowerShell -warningaction silentlycontinue
}

对于那些不严格遵循命名约定的人