対象: 新Office365 Office 365 Enterprise, Office 365 Small Business, Office 365 Midsize Business
(この記事は 2014 年 8 月 4 日に Hey, Scripting Guy! Blog に投稿された記事 Use PowerShell to Create Bulk Users for Office 365の翻訳です。最新情報については、翻訳元の記事をご参照ください。)
概要: Microsoft Scripting Guy の Ed Wilson が、Office 365 ユーザーの一括作成について説明します。
こんにちは、Microsoft Scripting Guy こと Ed Wilson です。今朝は私のメンティーと少し話をしました。昨日メンターと面談したばかりなので、なんだかすべてがつながったような感じです。
最近このブログで、Office 365 や Windows PowerShell について多数の質問を受けていたので、そのことについても少し相談しました。
メモこの Hey, Scripting Guy! ブログでは、「Office 365 と PowerShell の利用開始 (英語)」、「PowerShell を使用した Office 365 インストールの検索 (英語)」、「PowerShell を使用した Office 365 ユーザーの管理」などのトピックを扱ってきました。Office 365 と Windows PowerShell に関する基本的なタスクの詳細については、Hey, Scripting Guy! ブログ (英語)のシリーズ全体をご覧ください。
Office 365 への接続
最初にすべきことは、Office 365 テナント インストールへの接続です。
まず、資格情報を簡単に再利用できるように XML ファイルに保存します。Get-Credentialコマンドレットを呼び出して、表示されたダイアログ ボックスに資格情報を入力すると、XML ファイルに保存されます。資格情報をインポートするには、Import-Clixmlコマンドレットを使用します。再構成された Credentialオブジェクトを使用して接続します。コマンドは次のようになります。
PS C:\> Get-Credential "admin@ScriptingGuy.OnMicrosoft.Com" |
>>> Export-Clixml C:\fso\ScriptingGuyCredential.xml
PS C:\> $cred = Import-Clixml C:\fso\ScriptingGuyCredential.xml
PS C:\> Connect-MsolService -Credential $cred
次の図に示すように、Windows PowerShell コンソールには何も出力されません。
メモ Azure Active Directory (Azure AD) モジュールを更新するには、コントロール パネルからアンインストールした後、TechNet ライブラリの「Azure AD モジュールのインストール」からインストールします。
CSV ファイル経由でユーザーを一括作成する
今回は CSV ファイルを作成し、それを使用して Office 365 インストールのユーザーを一括作成します。ライセンスの割り当て、ライセンス オプション、使用場所の割り当てなどについては取り上げません。これらについては次回の記事でお話することにして、今回はユーザーの一括作成に焦点を絞ります。
Azure AD モジュールで Office 365 のユーザーを作成するには、New-MSOlUserコマンドレットを使用します。この構文は、標準 Active Directory モジュールの New-Userコマンドレットとよく似ています。オプションの数は多くありませんが、処理はほとんど同じです。New-MSOlUserコマンドレットの構文は次のとおりです。
NAME
New-MsolUser
SYNOPSIS
Adds a new user to Windows Azure Active Directory.
SYNTAX
New-MsolUser -DisplayName <string> -UserPrincipalName <string>
[-AlternateEmailAddresses <string[]>] [-AlternateMobilePhones <string[]>]
[-BlockCredential <Boolean>] [-City <string>] [-Country <string>] [-Department
<string>] [-Fax <string>] [-FirstName <string>] [-ForceChangePassword <Boolean>]
[-ImmutableId <string>] [-LastName <string>] [-LicenseAssignment <string[]>]
[-LicenseOptions <LicenseOption[]>] [-MobilePhone <string>] [-Office <string>]
[-Password <string>] [-PasswordNeverExpires <Boolean>] [-PhoneNumber <string>]
[-PostalCode <string>] [-PreferredLanguage <string>] [-State <string>]
[-StreetAddress <string>] [-StrongPasswordRequired <Boolean>] [-TenantId <Guid>]
[-Title <string>] [-UsageLocation <string>] [<CommonParameters>]
このコマンドレットは、情報を入力するだけで簡単に使用できます。以下に使用例を示します。
New-MsolUser -UserPrincipalName "ScriptingWife@ScriptingGuy.OnMicrosoft.Com" -City
Charlotte -State NC -Country USA -DisplayName ScriptingWife
このコマンドでは、パスワードを設定しませんでした。コマンドレットから返されるユーザー オブジェクトにパスワードが含まれるので、返されたオブジェクトの情報を Send-SMTPMailにパイプ処理して、ユーザー情報とパスワードをユーザーに送信します。パスワードを作成したり、ユーザーを新規作成する際にパスワードを設定したりする必要がないので、とても便利です。Windows PowerShell コンソールには次のように出力されます。
Office 365 テナント管理サイトに移動すると、Scripting Wife ユーザーが作成されていることを確認できます。
CSV ファイルを読み込んでユーザーを作成する
次に、CSV ファイルを読み込んでユーザーを一括作成します。そのためにまず CSV ファイルを作成します。私は CSV ファイルの作成に Microsoft Excel を使用しています。インターフェイスが使いやすく、メニューで CSV ファイルとして保存できるからです。
CSV ファイルからユーザーを New-MSOLUserコマンドレットに渡せるといいなと期待していたのですが、残念ながらエラーが発生してしまったので、ユーザーを Foreach-Objectコマンドレット経由でパイプ処理しなければなりません。このコマンドレットは場所に関するパラメーターにはあまり対応していないので、すべて手作業で行う必要があります。次のようになります。
$users = Import-Csv C:\fso\Office365Users.CSV
$users | ForEach-Object {
New-MsolUser -UserPrincipalName $_.UserPrincipalName -City $_.city -State $_.State -Country $_.Country -DisplayName $_.DisplayName }
コマンドとその出力は次の図に示すとおりです。
ユーザーを一括削除する
ユーザーを一括で削除したい場合、再度 CSV ファイルを使用します。先ほど作成したばかりのユーザーは、とても簡単に削除できます。New-MSOlUserコマンドレットの代わりに Remove-MsolUserコマンドレットを使用するだけです。また、–Forceパラメーターも使用します。このパラメーターを指定しないと、各ユーザーについてプロンプトが表示されてしまうので好ましくありません。–Forceパラメーターを使用しない場合のコマンドは次のようになります。
PS C:\> $users = Import-Csv C:\fso\Office365Users.CSV
PS C:\> $users | ForEach-Object { Remove-MsolUser -UserPrincipalName $_.userprincipalname}
Confirm
Continue with this operation?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
上記のコマンドではなく、次のように –Forceパラメーターを指定して実行します。
$users | ForEach-Object { Remove-MsolUser -UserPrincipalName $_.userprincipalname -Force}
このコマンドは出力を返しません。
Azure AD モジュールを使用してユーザーを一括作成する方法については以上です。引き続き Office 365 Week として、明日も便利な情報をお届けします。
Twitter (英語)や Facebook (英語)でも情報を発信していますので、ぜひフォローをお願いします。ご不明な点がございましたら、私のアドレス (scripter@microsoft.com) 宛てに電子メールをお送りいただくか、公式の Scripting Guys フォーラム (英語)に投稿してください。それではまた明日お会いしましょう。
Microsoft Scripting Guy こと Ed Wilson