概要
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"
}