2018/10/19

移動ユーザープロファイルの一括設定 by dsコマンド+PowerShell

Windows 10 ver 1809 (RS5) の問題として、以下の問題が話題になっているみたいですが...

Windows 10 RS5 (1809) における移動ユーザー プロファイルの問題について
https://blogs.technet.microsoft.com/jpntsblog/2018/10/17/rs5_rup_problem/

この問題が再現するケースってレアなんじゃないか説と回避策のコマンドラインがアレなんじゃないか説。

(先に言っときますが、すべて私の勘違いかもしれません)

公式ブログを読むと、みんな次のようなことを想像すると思う。

複数のユーザーを選択して、%USERNAME%で移動ユーザー プロファイルのパスを一括設定するような。
で、各ユーザーの移動ユーザープロファイルのパスの%USERPROFILE%がそのまま入っちゃうという問題だと。でも、この方法は何の問題もなくユーザー名に変換されます。
みなさんが想像している設定方法に問題はなさそう。Windows 10 ver 1809 のドメイン参加クライアントからのサインインも問題なく、パス内に demouser01.V6 とか demouser02.V6 ディレクトリが作成されていました。

どういう状況で %USERPROFILE% がそのまま残るのか??? グループポリシーで設定したとき???(やったことないからどこでやるのか知らない)

発生条件が良くわかりませんが、それは置いといて、公式ブログに記されている回避策のコマンド例「for /f "delims=" %i in ('dsquery user "OU=test,DC=test,DC=local"') do dsmod user %i -profile \\FILESVR\profile\$username$」↓って、これだとプロファイル パスに「\\FILESVR\profile\$username$」と設定されちゃうんじゃないかなと思う。そうしたいのかもしれませんが、全ユーザーが $username$ という名前の同じディレクトリを使うってことに???

 (もう一度言っときますが、すべて私の勘違いかもしれません)

というわけで、今回の問題とは関係なく、Active Directory の特定の OU 内のユーザーの移動プロファイルのパスを%USERPROFILE%環境変数使わずに「\\FILESVR\Profile\ユーザー名」に一括設定する PowerShell スクリプトを考えてみました。(コマンドプロンプトでやりたかったけど、考えるのが面倒だったから PowerShell にした)

こんな感じ。

$targetadusers = (dsquery user "OU=test,DC=test,DC=local")
foreach ($targetaduser in $targetadusers){
  $targetsamid = ((dsget user $targetaduser -samid)[1]).Trim()
  dsmod user $targetaduser -profile \\FILESVR\Profile\$targetsamid
}

やってみた。(ドメイン コントローラーまたは DS コマンドが使えるところで実行)
成功した。(dsget user $targetaduser -profile で設定値を取得するスクリプトを書くこともできる)

(最後に言っときますが、すべて私の勘違いかもしれません)
<ここから広告> 

Windows のトラブルを解決できるかもしれない本!

ITプロフェッショナル向け
Windowsトラブル解決コマンド&テクニック集

価格  2,700円(税込)
ISBN  978-4-8222-5381-3
発行日 2018年10月16日
著者名 山内 和朗(山市 良) 著
発行社 日経BP社
判型等 B5変/264ページ

日経BPブックナビ
https://www.nikkeibp.co.jp/atclpubmkt/book/18/P53810/
オンラインストア
amazon.co.jpRakutenブックス


<ここまで広告>

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。