対象: 新Office365 Office 365 Enterprise, Office 365 Small Business, Office 365 Midsize Business
(この記事は 2014 年 8 月 5 日に Hey, Scripting Guy! Blog に投稿された記事 Use PowerShell to Force Office 365 Online Users to Change Passwordsの翻訳です。最新情報については、翻訳元の記事をご参照ください。)
概要: Windows PowerShell を使用して Office 365 のオンライン ユーザーにパスワード変更を強制する方法について説明します。
Scripting Guy さん、こんにちは。昨日のブログで紹介されていた手法を使用して、Office 365 のオンライン ユーザーを一括作成してみました。今度は、そのユーザーにパスワードを変更してもらいたいと考えています。複雑なパスワードを設定してもらうようにできれば嬉しいです。何か良い方法を教えてください。
—SW
こんにちは、SW さん。
Microsoft Scripting Guy こと Ed Wilson です。今週、Scripting House の周辺は面白いことになってきています。それというのも、私 Scripting Guy の誕生日が数週間後に迫ってきているからです。Scripting Wife が私の誕生日に何をしてくれるのか、考えを巡らせるのが毎年の楽しみです。ある年、彼女に誘われてスモーキー山脈に向かうと、シンシナティからたくさんの友人を招待してサプライズ パーティを用意してくれていたことがありました。本当にうまくやってくれたので、皆がキャビンに姿を現すまでまったく気が付きませんでした。今年のお祝いは、おそらくスモーキー山脈でのサプライズ パーティではないと思いますが、どうでしょうか。彼女はときに、とんでもない創造性を発揮するので、まだ何とも言えません。
今、玄関ポーチに腰を下ろしてハワイのオーガニック ティーをすすりながら、Surface 2 Pro で scripter@microsoft.com宛てに届いたメールをチェックしているところです。SW さん、あなたからのメール��読んで、昨日の Hey, Scripting Guy! の記事の続きにふさわしい内容だと思いました。
メモ今回の記事を読み始める前に、昨日の「PowerShell を使用した Office 365 ユーザーの一括作成」を一読されることをお勧めします。
2 番目に重要なことを最初にやる
Azure Active Directory (Azure AD) モジュールを使用して Office 365 テナント インストールに接続したら (この方法については昨日の記事を参照)、ユーザーに強力なパスワードを設定するように要求します。これには、Set-MSOlUserコマンドレットを使用します。このコマンドレットの構文は次の図のとおりです。
StrongPasswordRequiredパラメーターは、ブール値のパラメーター (On/Off、True/False、Yes/No、ワックスかける/ワックスとる) です。
昨日の記事で使用した CSV ファイルは、パスワードの変更にも使用できます。CSV ファイルを使用してユーザーを作成すると、ファイルをユーザー管理にも利用できるというメリットがあるのです。ユーザー全員に対して強力なパスワードの設定を強制するには、次のコマンドを使用します。
$users = Import-Csv C:\fso\Office365Users.CSV
$users |
foreach { Set-MsolUser -UserPrincipalName $_.userprincipalname -StrongPasswordRequired:$true}
最初のコマンドは CSV ファイルを $usersという変数に読み込みます。2 つ目のコマンドは $usersコマンドレットのオブジェクトを Foreach-Objectコマンドレットにパイプ処理します。スクリプト ブロック内で Set-MSOlUserコマンドレットを使用することで、各ユーザーに強力なパスワードを設定するように要求できます。
コマンドが正しく機能していることを確認するには、次のコマンドを使用します。
$users |
foreach {Get-MsolUser -UserPrincipalName $_.userprincipalname | select displayname, strongpasswordrequired}
同じ $users変数を使用し、オブジェクトを Foreach-Objectコマンドレットにパイプ処理します。スクリプト ブロック内で Get-MSOlUserコマンドレットをそれぞれのユーザーに対して呼び出します。DisplayNameプロパティと StrongPasswordRequiredプロパティを表示させます。
2 つのコマンドとその出力は次の図に示すとおりです。
パスワード変更を強制する
ユーザー パスワードに特化したコマンドレットがあります。Set-MSOlUserPasswordコマンドレットです。新しいパスワードを設定したり、パスワードの変更を要求したりすることができます。構文は次のようになります。
パスワード変更を強制するコマンドの構文は、前述したユーザー全員に強力なパスワードの設定を強制するコマンドと非常に似ています。次のようになります。
$users |
foreach { Set-MsolUserPassword -UserPrincipalName $_.userPrincipalName -ForceChangePassword:$true}
2 つのコマンドを組み合わせる
2 つのコマンドは、別々に実行するのではなく、次のように連結することができます。
$users |
foreach {
Set-MsolUserPassword -UserPrincipalName $_.userPrincipalName -ForceChangePassword:$true;
Set-MsolUser -UserPrincipalName $_.userprincipalname -StrongPasswordRequired:$true}
メモこれは 1 つのコマンドですが、わかりやすいように改行しています。
ここまで、Windows PowerShell スクリプトを 1 つも書く必要がありませんでした。全部コピーして貼り付けると、次のような 1 つのスクリプトになります。
Get-Credential "admin@ScriptingGuy.OnMicrosoft.Com" |
Export-Clixml C:\fso\ScriptingGuyCredential.xml
$cred = Import-Clixml C:\fso\ScriptingGuyCredential.xml
Connect-MsolService -Credential $cred
$users = Import-Csv C:\fso\Office365Users.CSV
$users |
foreach {
Set-MsolUserPassword -UserPrincipalName $_.userPrincipalName -ForceChangePassword:$true
Set-MsolUser -UserPrincipalName $_.userprincipalname -StrongPasswordRequired:$true}
もっと見やすくした図を次に示します。
SW さん、Windows PowerShell を使用して Office 365 ユーザーにパスワード変更を強制する方法と、複雑なパスワードの設定を強制する方法については以上です。引き続き Office 365 Week として、明日も便利な情報をお届けします。
Twitter (英語)や Facebook (英語)でも情報を発信していますので、ぜひフォローをお願いします。ご不明な点がございましたら、私のアドレス (scripter@microsoft.com) 宛てに電子メールをお送りいただくか、公式の Scripting Guys フォーラム (英語)に投稿してください。それではまた明日お会いしましょう。
Microsoft Scripting Guy こと Ed Wilson