2014-10-09 40 views
1

我想創建一個項目,使用PowerShell創建活動目錄中的用戶。雖然 所有,我的問題是,讓我們說,我這條命令:Powershell新的ADUser錯誤處理密碼的複雜性(ActiveDirectory模塊)

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

正如你所知道的「ABC」不符合密碼要求,所有雖然它反正,但增加了用戶沒有在我的項目,其密碼是不可接受的,我不想這樣做,所以如果它在任何參數失敗,它應該輸出錯誤,而不運行其他參數!我最好在一行中這樣做,所以我不必爲它創建腳本,只需在我的應用程序中調用它即可。 嘗試了多個參數,如-whatif並嘗試抓住! 任何形式的來源/答案都非常感謝!

回答

2

爲了澄清原來的崗位,這將返回錯誤:

「新ADUser便有:密碼不符合長度,複雜性或歷史域的要求。」

用戶帳戶已創建,但已禁用。

在New-ADUser cmdlet上指定-ErrorAction Stop並不足以阻止創建用戶帳戶。

爲了防止用戶帳戶被創建,您必須設置全局ErrorActionPreference像這樣(還有如何使用ErrorAction參數):如果你願意,你可以在你的新ADUser便有cmdlet的包裝這使

$ErrorActionPreference = "Stop" 

它僅影響該cmdlet,而不是你的腳本的其餘部分,像這樣:

$ExistingEAP = $ErrorActionPreference 
$ErrorActionPreference = "Stop" 
New-ADUser ... -ErrorAction Stop 
$ErrorActionPreference = $ExistingEAP 

對於一個更完整的例子,假設你有一些通用的帳戶一個簡單的$ samaccountnames的userArray,你可以嘗試這樣的事情:

$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" 

這適用於我在我的環境中。