作成日:2021/07/18 更新日:2021/12/31

概要

powershellでCSVに登録されているユーザを追加するスクリプトを紹介します。

仕様

CSVファイル(.\input\addUserList.csv)に追加したユーザを定義し、既にユーザが存在する場合はエラーとせずスキップする。

前提

・ベースディレクトリ\input\userList.txtに追加ユーザデータの定義が必要。

userList.txtの例
accountName,password
testuser,P@ssw0rd

スクリプト

#####################################################################
#powershell でcsvに定義したユーザを一括追加するスクリプト
#####################################################################

#ベースディレクトリにこのファイルの親ディレクトリを設定
#コピペする場合
#$DIR_BASE="C:\bat"
#バッチ実行する場合
$DIR_BASE= Split-Path (Split-Path ($MyInvocation.MyCommand.Path) -Parent) -Parent

#現在の登録ユーザ一覧
$currentAccountNames  = @()
Get-LocalUser | %{
    $currentAccountNames = $currentAccountNames + $_.Name
}

#登録ユーザ一覧csv読み込み
$userList = $DIR_BASE + "\input\addUserList.csv"
$addUsers = import-csv $userList

$addUsers | ForEach-Object{
    #既に存在するユーザの場合はスキップ
    if ($currentAccountNames.Contains($_.accountName)){
        $a=$_.accountName
        Write-Host " $a exists. so skip it"
        return
    }

    $passwd = convertto-securestring  $_.password -AsPlainText -Force
    #New-LocalUser  $_.accountName -Password $passwd
    #-NoPasswordの指定をするとユーザは次回ログオン時にパスワード変更が必要
    New-LocalUser  $_.accountName -NoPassword
    #usersグループに所属させる
    Add-LocalGroupMember -Group Users -Member $_.accountName

    #Write-Host "New-LocalUser  $_.accountName -Password $passwd"
}
★ORACLE案件承ります