1

以下は私のPowershellスクリプトです-

Import-Module ActiveDirectory
$objOU=[ADSI]“LDAP://OU=Service,OU=Accounts,DC=xyz,DC=com”;
$dataSource=import-csv “add_user2.csv”;

foreach($dataRecord in $datasource) 
{
$cn=$dataRecord.FirstName + ” ” + $dataRecord.LastName
$sAMAccountName=$dataRecord.FirstName + “.” + $dataRecord.LastName
$givenName=$dataRecord.FirstName
$sn=$dataRecord.LastName

$displayName=$sn + “, ” + $givenName
$userPrincipalName=$sAMAccountName + “@test.com”;

#Additional Attributes
$objUser=$objOU.Create(“user”,”CN=”+$cn)
$objUser.Put(“sAMAccountName”,$sAMAccountName)
$objUser.Put(“userPrincipalName”,$userPrincipalName)
$objUser.Put(“displayName”,$displayName)
$objUser.Put(“givenName”,$givenName)
$objUser.Put(“sn”,$sn)

#Place the additional attributes into the record

$objUser.Put("PasswordNeverExpires", $true)
$objUser.SetInfo()

}

上記のスクリプトを使用して、ActiveDirectory ユーザーの値を設定しようとしています。私が直面している問題は、[アカウント] タブの [アカウント オプション] の下にある "PasswordNeverExpires" 属性を True に設定できないことです。

私の入力ファイル「add_user1.csv」は次のようになります-

FirstName   LastName
Test              Account1

すべての助けに感謝します。

よろしく。

4

2 に答える 2

2

PasswordNeverExpiresUserAccountControl プロパティをいじる必要を回避するために使用できるもう 1 つの方法は、 のパラメーターを使用することですSet-ADUser

$objUser | Set-ADUser -PasswordNeverExpires

実際、次を使用して、そのコードの多くを置き換えることができます。New-ADUser

Import-Module ActiveDirectory
$dataSource=import-csv “add_user2.csv”;

foreach($dataRecord in $datasource) 
{
    $cn=$dataRecord.FirstName + ” ” + $dataRecord.LastName
    $sAMAccountName=$dataRecord.FirstName + “.” + $dataRecord.LastName
    $givenName=$dataRecord.FirstName
    $sn=$dataRecord.LastName
    $displayName=$sn + “, ” + $givenName
    $userPrincipalName=$sAMAccountName + “@test.com”;

    New-ADUser $cn -SamAccountName $sAMAccountName -GivenName $givenName `
        -Surname $sn -DisplayName $displayName -UserPrincipalName $userPrincipalName `
        -PasswordNeverExpires $true -Path "OU=Service,OU=Accounts,DC=rjfdev,DC=com"
}
于 2013-05-24T18:53:20.690 に答える
2

PasswordNeverExpires プロパティはありません。走っGet-Member$objUserみると、これが見えます。これらのプロパティは、UserAccountControl によって制御されます。詳細については、こちらをご覧ください

このブログ記事では、password never expires 属性を true に設定する方法について詳しく説明しています。

Setting "Password never expire" attribute on user object 
This property unlike many other properties of AD object are contained in bitmask
attribute UserAccountControl 
(not related in any way with User Account Control feature of Windows). 
To set it you need to retrieve current value of this attribute and use binary OR
operation (-bor) to calculate new value.


$User = [ADSI]"LDAP://cn=Gusev,ou=Users,ou=Lab,dc=contoso,dc=com"
$UAC = $User.UserAccountControl[0] -bor 65536
$User.Put("userAccountControl",$UAC)
$User.SetInfo()

スクリプトを次のように変更する必要があります。

$objUser.SetInfo()

#Place the additional attributes into the record
$UAC = $objUser.UserAccountControl[0] -bor 65536
$objUser.Put("userAccountControl",$UAC)
$objUser.SetInfo()

スクリプトを 2 回実行しないSetInfo()と、エラーがスローされます。

于 2013-05-24T16:29:44.343 に答える