2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellを使ってADの「次回ログオン時、パスワードを変更する」を一括でやる方法

Posted at

これやるのにめっちゃ時間かかったのでメモ
ユーザー毎とグループ毎で一括設定できます

ユーザー用

# 複数のアカウント表示名を指定
$userDisplayNames = @("テスト ユーザーA","テスト ユーザーB","テスト ユーザーC")



try {
    $totalUserCount = 0  # 合計ユーザー数をカウントする変数を初期化

    foreach ($userDisplayName in $userDisplayNames) {
        # ユーザーを表示名から取得
        $user = Get-ADUser -Filter "DisplayName -eq '$userDisplayName'"

        # ユーザーが存在する場合のみ処理を行う
        if ($user) {
            # ユーザーに対してPasswordNeverExpiresを設定する
            Set-ADUser -Identity $user.SamAccountName -PasswordNeverExpires $false
            Write-Host "ユーザー '$userDisplayName' のパスワードの有効期限を無期限にする設定を無効にしました。"

            # ユーザーに対してChangePasswordAtLogonを設定する
            Set-ADUser -Identity $user.SamAccountName -ChangePasswordAtLogon $true
            Write-Host "ユーザー '$userDisplayName' のパスワードリセットの準備が完了しました。"

            $totalUserCount++  # 合計ユーザー数をインクリメント
        } else {
            Write-Host "アカウント表示名 '$userDisplayName' のユーザーが見つかりませんでした。"
        }
    }

    # 合計ユーザー数を表示
    Write-Host "設定した合計ユーザー数: $totalUserCount"
} catch {
    Write-Host "エラーが発生しました: $($_.Exception.Message)"
}

グループごと

# 複数のグループ名を指定
$groupNames = @("グループ1", "グループ2", "グループ3")


try {
    foreach ($groupName in $groupNames) {
        # グループのメンバーを取得
        $groupMembers = Get-ADGroupMember -Identity $groupName -Recursive

        # 各メンバーに対して処理を行う
        $userCount = 0
        foreach ($member in $groupMembers) {
            if ($member.objectClass -eq "user") {
                # ユーザーに対してPasswordNeverExpiresを設定する
                Set-ADUser -Identity $member.SamAccountName -PasswordNeverExpires $false
                Write-Host "グループ '$groupName' のユーザー '$($member.SamAccountName)' のパスワードの有効期限を無期限にする設定を無効にしました。"

                # ユーザーに対してChangePasswordAtLogonを設定する
                Set-ADUser -Identity $member.SamAccountName -ChangePasswordAtLogon $true
                Write-Host "グループ '$groupName' のユーザー '$($member.SamAccountName)' のパスワードリセットの準備が完了しました。"

                $userCount++
            }
        }

        # ユーザーの合計数を表示
        Write-Host "グループ '$groupName' のユーザーの合計数: $userCount"
    }
} catch {
    Write-Host "エラーが発生しました: $($_.Exception.Message)"
}
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?