【Windows】PowerShellによるユーザ登録について

PowerShell

はじめに

PowerShellでユーザを作成するためのスクリプトを紹介します。手動で作成しても良いですが、今回は検証用に50ユーザ程作ろうかと思い、手動ではしんどいので一括で作成するためのスクリプトを作成しました。

作成するユーザーはfileuser01からfileuser50を作成し、作成ユーザーはfileusergrpというグループに所属するように設定します。また、ドメインは「jasm.ricecake24book.com」としていますので、流用する際は適宜変えてみてください。

※本記事は下記のファイルサーバ移行検証の一部です。

ユーザ追加

ドメインユーザーの場合とローカルユーザーの場合で分けて紹介します。

AD環境の場合

以下のスクリプトをPowerShellで実行します。

## Active Directory モジュールのインポート
Import-Module ActiveDirectory

# ユーザー名の接頭辞
$userPrefix = "fileuser"

# ユーザー数
$userCount = 50

# ドメイン情報
$domain = "jasm.ricecake24book.com"

# グループ名
$groupName = "fileusergrp"

# 管理者の資格情報を取得
$credential = Get-Credential -Message "Enter domain admin credentials"

# グループが存在するか確認し、存在しない場合は作成
Write-Host "Checking for group $groupName"
$group = Get-ADGroup -Filter { Name -eq $groupName } -Server $domain -Credential $credential
if (-not $group) {
    Write-Host "Creating group $groupName"
    New-ADGroup -Name $groupName -SamAccountName $groupName -GroupScope Global -Server $domain -Credential $credential
    Write-Host "Created group: $groupName"
} else {
    Write-Host "Group $groupName already exists."
}

# ユーザーを作成するループ
for ($i = 1; $i -le $userCount; $i++) {
    $username = $userPrefix + "{0:d2}" -f $i
    $password = ConvertTo-SecureString -AsPlainText "Share_test01!" -Force
    $userParams = @{
        Name               = $username
        SamAccountName     = $username
        UserPrincipalName  = "$username@$domain"
        Path               = "CN=Users,DC=jasm,DC=ricecake24book,DC=com"
        AccountPassword    = $password
        Enabled            = $true
        PasswordNeverExpires = $true
        GivenName          = "File"
        Surname            = "User$i"
        DisplayName        = "File User $i"
        Description        = "File User Account"
        Server             = $domain
        Credential         = $credential
    }

    Write-Host "Creating user: $username"
    try {
        New-ADUser @userParams
        Write-Host "Created user: $username"
    } catch {
        Write-Host "Failed to create user: $username"
        Write-Host $_.Exception.Message
        continue
    }

    Write-Host "Adding $username to group: $groupName"
    try {
        Add-ADGroupMember -Identity $groupName -Members $username -Server $domain -Credential $credential
        Write-Host "Added $username to group: $groupName"
    } catch {
        Write-Host "Failed to add $username to group: $groupName"
        Write-Host $_.Exception.Message
    }
}

※以下は実行前の状態

実行後の結果は下記の通りです。

グループにもユーザが追加されています。

WORKGROUPの場合

以下はWORKGROUPの場合のスクリプトです。

# ユーザー名の接頭辞
$userPrefix = "fileuser"

# ユーザー数
$userCount = 50

# グループ名
$groupName = "fileusergrp"

# グループの存在を確認し、なければ作成する
if (-Not (Get-LocalGroup -Name $groupName -ErrorAction SilentlyContinue)) {
    New-LocalGroup -Name $groupName -Description "Group for file users"
    Write-Host "Created group: $groupName"
} else {
    Write-Host "Group $groupName already exists"
}

# ユーザーを作成するループ
for ($i = 1; $i -le $userCount; $i++) {
    $username = $userPrefix + "{0:d2}" -f $i
    $password = ConvertTo-SecureString -AsPlainText "Share_test01!" -Force
    New-LocalUser -Name $username -Password $password -FullName "File User $i" -Description "File User Account" -PasswordNeverExpires
    Write-Host "Created user: $username"

    # ユーザーをグループに追加
    Add-LocalGroupMember -Group $groupName -Member $username
    Write-Host "Added user: $username to group: $groupName"
}

※AD環境と同様に、ユーザーとグループが作成されます。

次に、テスト用のファイルとフォルダを作成します。