gpt4 book ai didi

Powershell New-ADUser 错误处理密码复杂度(ActiveDirectory 模块)

转载 作者:行者123 更新时间:2023-12-02 23:28:25 27 4
gpt4 key购买 nike

我正在尝试创建一个使用 powershell 在事件目录中创建用户的项目。
尽管如此,我的问题是假设我运行这个:

New-ADUser test1 -Givenname test -surname test -AccountPassword (ConvertTo-SecureString "abc" -AsPlainText -force)

如您所知,“abc”不符合密码要求,尽管它无论如何都会添加用户但没有密码,这在我的项目中是 Not Acceptable ,我不想这样做,所以如果它在任何参数中失败,它应该输出完全没有运行其他参数的错误!我希望最好在一行中这样我不必为它创建脚本,只需在我的应用程序中调用它。
尝试了多个参数,例如 -whatif 和 try, catch!
任何类型的来源/答案都非常感谢!

最佳答案

为了澄清原始帖子,这将返回错误:

“New-ADUser : 密码不符合域的长度、复杂性或历史要求。”。

用户帐户已创建,但已禁用。

在 New-ADUser cmdlet 上指定 -ErrorAction Stop 不足以阻止创建用户帐户。

为了防止创建用户帐户,您必须像这样设置全局 ErrorActionPreference(并且还使用 ErrorAction 参数):

$ErrorActionPreference = "Stop"

如果您希望可以将它包装在您的 New-ADUser cmdlet 周围,这样它只会影响该 cmdlet 而不会影响脚本的其余部分,如下所示:
$ExistingEAP = $ErrorActionPreference
$ErrorActionPreference = "Stop"
New-ADUser ... -ErrorAction Stop
$ErrorActionPreference = $ExistingEAP

对于更完整的示例,假设您有一些通用帐户的简单 $userArray 的 samaccountnames,您可以尝试以下操作:
$ExistingEAP = $ErrorActionPreference
$ErrorActionPreference = "Stop"
$userarray = "test1","test2","test3"
foreach($username in $userarray)
{
try
{
New-ADUser $username -Givenname test -surname test -AccountPassword (ConvertTo-SecureString "abc" -AsPlainText -force) -ErrorAction Stop
$created += @($username)
}
catch
{
$notcreated += @($username)
}
}
$ErrorActionPreference = $ExistingEAP
Write-Output "Created $created"
Write-Output "Could not create: $notcreated"

这在我的环境中对我有用。

关于Powershell New-ADUser 错误处理密码复杂度(ActiveDirectory 模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com