はじめに
なんでActive Directoryじゃないの、というつっこみはなしでお願いします(;>ω<)
WMIからユーザ名を取得して、ner user
で地道に情報を取得しています。
出力形式
YYYYMMDD_サーバ名.csv
"ユーザ名","アカウント有効","最終パスワード変更日時","パスワード有効期間","最終ログオン日時","所属グループ"
"Administrator","Yes","2015/09/01","2015/10/13","2015/09/17","*Administrators "
ソース
userdataList.ps1
#出力パス作成
$d = Get-Date -Format "yyyyMMdd"
$mypath = Split-Path $myInvocation.MyCommand.Path -Parent
$path = $mypath + $d + "_" + $env:computerName + ".csv"
#WMIを取り出す
$WMIResult = Get-WmiObject -q "SELECT Name From Win32_UserAccount Where LocalAccount=True"
#カスタムオブジェクト(要素の入れ物)
$Datas = New-Object System.Collections.ArrayList
$WMIResult | %{ ($_.name) } | %{
# カスタムオブジェクトの要素作成
$Data = New-Object PSObject | Select-Object ユーザ名, アカウント有効, 最終パスワード変更日時,パスワード有効期間,最終ログオン日時,所属グループ
#ユーザ情報の取得
$detailUser = net user $_
#カスタムオブジェクトの要素に値を設定
$Data.ユーザ名 = ($detailUser[0] -replace '\s+','■').Split("■")[1]
$Data.アカウント有効 = ($detailUser[5] -replace '\s+','■').Split("■")[1]
$Data.最終パスワード変更日時 = ($detailUser[8] -replace '\s+','■').Split("■")[1]
$Data.パスワード有効期間 = ($detailUser[9] -replace '\s+','■').Split("■")[1]
$Data.最終ログオン日時 = ($detailUser[18] -replace '\s+','■').Split("■")[1]
#ローカルグループは可変なので、直後のグローバルグループの開始位置を取得する
#初期値
$count = 0
$ln = foreach($e In $detailUser){if ($e -match "グローバル"){$count}$count += 1}
$joinGroup = ""
for ($i=0; $i -lt ($ln - 22) ; $i++){
$hoge = ($detailUser[22+$i] -replace '\s+','')
$joinGroup += $hoge.Substring($hoge.IndexOf("*")) + " "
}
$Data.所属グループ = $joinGroup
# カスタムオブジェクトに要素を追加
[void]$Datas.Add($Data)
}
$Datas |Export-Csv -Path $path -EnCoding default -Force -NoTypeInformation
カスタム
他の情報が必要な場合は、下記をもとに「カスタムオブジェクトの要素作成/値を設定」辺りを変更します。
行番号($detailUser) | 情報($Data.) |
---|---|
0 | ユーザー名 |
1 | フル ネーム |
2 | コメント |
3 | ユーザーのコメント |
4 | 国コード |
5 | アカウント有効 |
6 | アカウントの期限 |
7 | (空行) |
8 | 最終パスワード変更日時 |
9 | パスワード有効期間 |
10 | パスワード次回変更可能日時 |
11 | パスワードあり |
12 | ユーザーによるパスワード変更可能 |
13 | (空行) |
14 | ログオン可能なワークステーション |
15 | ログオン スクリプト |
16 | ユーザー プロファイル |
17 | ホーム ディレクトリ |
18 | 最終ログオン日時 |
19 | (空行) |
20 | ログオン可能時間 |
21 | (空行) |
22 | 所属しているローカル グループ |
所属しているグローバル グループ |