ADUserとかを編集するPowerShellを作るときの心がけ

個人的な意見なので聞き流してほしい。

Microsoft 365やActive Directoryなどを値をPowerShellで編集する際の心がけなんだけど,

「チェックを確実に行えるようにする」ってのがある。

作業前と作業後に「Get-ADUser <Username>」を実行して比較すればいいじゃん

って人は周りに多いけど,チェックミスしない自信があるの?10件,100件でも大丈夫?って思うし,なんでプログラミングしているのにチェックが手動なんだろう?って思う。

変更するプロパティ情報を比較して「True/False」でチェックしたほうがよくないですか?
全角半角,大文字小文字,スペース,lとIのチェックは文字列比較すれば一発ですよ。

$resluts = @()
$obj = @()

$users_csv = import-csv -Path 'filename'
foreach ($user in $users_csv) {
  $ADUser = Get-ADUser -Identity $user.SAN
    $obj = New-Object PSObject -Property @{
     name               = $user.Name
        DisplayName        = $user.DisplayName
        ADName             = $ADUser.Name
        ADDisplayName      = $ADUser.ADDisplayName
        check_DName      = $user.DisplayName -eq $ADUser.DisplayName
    }
    $resluts += $obj
}
$resluts | import-csv -Path 'filename'
信頼できるCSVファイルをどうやって作成するか?という問題はあるけど,チェック作業の信頼性を高めるために↑のようなのを基本作るようにしています。
DisplayNameを変更したいなら,CSVと実際の値を比較した結果を得られるようにすればよい。って感じです。
変更前にやれば現状チェックになるし,作業中なら進捗確認にもなるし,作業後は完了チェックも出来る。Excelで読み込んでcheck_DName列をソートしてFalseがないことを確認する。それだけで確実に作業が終わりました!!って言える。

作業前と作業後に「Get-ADUser <Username>」を実行したのでチェックしてください!!って言われることあるけど,ほんとめんどくさいのでやめてほしい。

コメント

このブログの人気の投稿

1000ユーザーの役職情報を削除しなさい

SharePoint2010のカレンダーをカテゴリ別に色分けする

「列の制限」の計算表を作ってみた。