使用 AD PowerShell 进行异常处理
Exception Handling with AD PowerShell
我正在构建一个 PowerShell 脚本,通过从 Csv 文件导入名称来创建 AD 组(全局和本地域)。
我很难处理在组已经存在的情况下将生成的异常。
我想要实现的是,如果 Csv 中的名称不存在组,那么 PS 应该创建它们并显示消息 "Groups have been created",如果它们已经存在,那么它应该显示 "Groups already exist" 行行,这样如果一个存在而另一个不存在,那么它应该显示相应的消息。
发生的事情是 PS 在创建组时不显示消息,而在发生异常时它只显示全局组而不是本地组的消息。
请指教
这是代码 -
Try {
New-ADGroup -Name TestGlobal -GroupCategory Security -GroupScope Global -ManagedBy TEMP01 -Description "Owner is TEMP01" -Path (Some OU)
} Catch [Microsoft.ActiveDirectory.Management.ADException] {
if ($_ -like "The specified group already exists") {
Write-Host “!!! GLOBAL GROUP ALREADY EXISTS !!!”
} elseif ($_ -eq $null) {
Write-Host " GLOBAL GROUP CREATED SUCCESSFULLY "
}
}
Try {
New-ADGroup -Name TestLocal -GroupCategory Security -GroupScope DomainLocal -ManagedBy TEMP02 -Description "Owner is TEMP02" -Path (Some OU)
} Catch [Microsoft.ActiveDirectory.Management.ADException] {
if ($_ -like "The specified group already exists") {
Write-Host “!!! LOCAL GROUP ALREADY EXISTS !!!”
} elseif ($_ -eq $null) {
Write-Host " LOCAL GROUP CREATED SUCCESSFULLY "
}
}
PowerShell 有点奇怪,默认情况下,错误是非终止的。这意味着错误将输出到控制台,但它只会继续到下一行代码,就好像什么都没发生一样。
不幸的是,Try
块仅响应终止错误。
您可以更改此行为。在你的 New-ADGroup
行中,将此添加到末尾:
-ErrorAction Stop
这将告诉 PowerShell 您希望它将该行上的错误视为终止。
如果你愿意,你可以在这里做更多的阅读:
https://blogs.technet.microsoft.com/heyscriptingguy/2014/07/09/handling-errors-the-powershell-way/
我正在构建一个 PowerShell 脚本,通过从 Csv 文件导入名称来创建 AD 组(全局和本地域)。 我很难处理在组已经存在的情况下将生成的异常。 我想要实现的是,如果 Csv 中的名称不存在组,那么 PS 应该创建它们并显示消息 "Groups have been created",如果它们已经存在,那么它应该显示 "Groups already exist" 行行,这样如果一个存在而另一个不存在,那么它应该显示相应的消息。
发生的事情是 PS 在创建组时不显示消息,而在发生异常时它只显示全局组而不是本地组的消息。
请指教
这是代码 -
Try {
New-ADGroup -Name TestGlobal -GroupCategory Security -GroupScope Global -ManagedBy TEMP01 -Description "Owner is TEMP01" -Path (Some OU)
} Catch [Microsoft.ActiveDirectory.Management.ADException] {
if ($_ -like "The specified group already exists") {
Write-Host “!!! GLOBAL GROUP ALREADY EXISTS !!!”
} elseif ($_ -eq $null) {
Write-Host " GLOBAL GROUP CREATED SUCCESSFULLY "
}
}
Try {
New-ADGroup -Name TestLocal -GroupCategory Security -GroupScope DomainLocal -ManagedBy TEMP02 -Description "Owner is TEMP02" -Path (Some OU)
} Catch [Microsoft.ActiveDirectory.Management.ADException] {
if ($_ -like "The specified group already exists") {
Write-Host “!!! LOCAL GROUP ALREADY EXISTS !!!”
} elseif ($_ -eq $null) {
Write-Host " LOCAL GROUP CREATED SUCCESSFULLY "
}
}
PowerShell 有点奇怪,默认情况下,错误是非终止的。这意味着错误将输出到控制台,但它只会继续到下一行代码,就好像什么都没发生一样。
不幸的是,Try
块仅响应终止错误。
您可以更改此行为。在你的 New-ADGroup
行中,将此添加到末尾:
-ErrorAction Stop
这将告诉 PowerShell 您希望它将该行上的错误视为终止。
如果你愿意,你可以在这里做更多的阅读:
https://blogs.technet.microsoft.com/heyscriptingguy/2014/07/09/handling-errors-the-powershell-way/