Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

最も役立つ Office 365 PowerShell コマンド 10選

最も役立つ Office 365 PowerShell コマンド 10選

Mar 17, 2023

Windows PowerShell を使って Office 365 を管理する のは、最初は少し不思議に感じるかもしれません。クラウド ソリューションは、結局のところシンプルさや使いやすさを約束しているのですから——こうした形容詞が Windows PowerShell と結び付けて使われることは、めったにありません。しかし、少し待ってください。この記事では、システム管理者向けに最も役立つ Office 365 PowerShell の cmdlet を 10 個紹介します。これらの手順を読めば、PowerShell がクラウドベースのシステムにおいても、価値あるツールになり得るとご納得いただけるかもしれません。

1. PowerShell で Office 365 インスタンスに接続する

まず、Windows PowerShell 用の Office 365 モジュールをインストールし、Office 365 インスタンスに接続する必要があります。次の手順を実行してください:

1. Microsoft Online Services Sign-In Assistant for IT Professionals RTW をダウンロードしてインストールします。

2. Microsoft Azure Active Directory および Office 365 用の Online Services PowerShell モジュールをインポートします:

      Install-Module -Name AzureAD
Install-Module -Name MSOnline
      

3. Office 365 の管理者資格情報を入力します:

      $Cred = Get-Credential
      

4. リモート PowerShell セッションを作成します:

      $O365 = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Cred -Authentication Basic -AllowRedirection
      

5. セッション コマンドをローカルの Windows PowerShell セッションにインポートします:

      Import-PSSession $O365
      

6. すべての Office 365 サービスに接続します:

      Connect-MsolService –Credential $O365
      

Windows PowerShell 用のモジュールをインポートしたら、Office 365 インスタンスを管理する準備が整いました。

2. PowerShell を使用して Exchange Online と SharePoint Online に接続する

Microsoft Exchange Online と Microsoft SharePoint Online に個別に接続することもできます。PowerShell で Exchange Online に接続するのは、基本的に Office 365 に接続するのと同じです:

      $Cred = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Cred -Authentication Basic –AllowRedirection
      

SharePoint Online への接続は少しだけ異なります。SharePoint Online テナントを管理するには、まず SharePoint Online Management Shell 機能をダウンロードしてインストールする必要があります。次に、以下の PowerShell スクリプトを実行します:

      $admin="Admin@enterprise.onmicrosoft.com"
$orgname="enterprise"
$userCred = Get-Credential -UserName $admin -Message "Type the password."
Connect-SPOService -Url https://$orgname-admin.sharepoint.com -Credential $userCred
      

3. 利用可能な Office 365 PowerShell cmdlet の一覧を取得する

利用可能なすべての Office 365 PowerShell commands の一覧を取得するには、Get-Command cmdlet を実行します:

      Get-Command -module MSOnline
      
Image

Azure Active Directory の cmdlet 一覧も取得できます:

      Get-Command -module AzureAD
      

4. PowerShell ですべての Office 365 ユーザーの一覧を取得する

Office 365 のユーザーとライセンスの一覧を提供する必要がある場合は、Get-MsolUser cmdlet を使用します。Office 365 テナント内で有効なライセンスを持つすべてのユーザーを、DisplayName、City、Department、および ObjectID パラメーターと一緒に取得します。

      Get-MsolUser | Select DisplayName, City, Department, ObjectID
      

アカウント ライセンスの数を確認するには、次の cmdlet を実行する必要があります。

      Get-MsolAccountSku
      

利用可能なサービスを一覧表示するには、次のスクリプトを実行します。

      Get-MsolAccountSku | select -ExpandProperty ServiceStatus
      
Image

5. PowerShell を使用して Office 365 で新しいユーザーを作成する

新しいユーザーを作成するには、New-MsolUser コマンドを使用します。

      New-MsolUser -UserPrincipalName JSmith@enterprise.onmicrosoft.com -DisplayName "John Smith"  -FirstName “John” -LastName “Smith”
      

システムは、ユーザーのパスワードとライセンス状況データを出力します。

6. PowerShell ですべてのサイトからユーザーを削除する

すべてのサイトからユーザーを一度に削除するには、次のコマンドを使用します。

      Get-SPOSite | ForEach {Remove-SPOUser -Site $_.Url -LoginName " JSmith@enterprise.onmicrosoft.com"}
      

7. PowerShell で Office 365 のパスワードを変更する

アカウントのパスワードを変更する必要がある場合は、Set-MsolUserPassword cmdlet を使用します。以下の例のように新しいパスワードを指定するか、-NewPassword パラメーターを省略すると、システムがランダムなパスワードを自動的に生成します。

      Set-MsolUserPassword -UserPrincipalName JSmith@Netwrixqcspa.onmicrosoft.com -NewPassword P@SSw0rd!
      

8. PowerShell で Office 365 のグループ メンバーシップを管理する

PowerShell の cmdlet を使って Office 365 group も管理できます。Office 365 内のすべてのグループの一覧を取得するには、次のコマンドをそのまま使用してください: Get-MsolGroup。グループにユーザーを追加するには、 Add-MsolGroupMember コマンドを使用します:

      Add-MsolGroupMember -GroupObjectId 5b61d9e1-a13f-4a2d-b5ba-773cebc08eec -GroupMemberObjectId a56cae92-a8b9-4fd0-acfc-6773a5c1c767 -GroupMembertype user
      

GroupObjectId はグループの16進数の ID で、次の Get-MsolGroup コマンドから取得できます。GroupMemberObejctId はユーザーのオブジェクト ID で、次のコマンドを実行すると確認できます:

      Get-MsolUser | Select ObjectID.
      

グループからユーザーを削除するには、 Remove-MsoGroupMember の cmdlet を使用します。

9. PowerShell で SharePoint サイト コレクションを作成する

PowerShell を使って SharePoint サイト コレクションを作成することもできます:

      New-SPOSite -Url "https://enterprise.sharepoint.com/sites/NewSite" -Owner "JSmith@enterprise.onmicrosoft.com" -StorageQuota "100" -Title "New Site"
      

10. PowerShell で Office 365 のレポートを作成する

PowerShell は、さまざまなレポートを作成するのに最適なツールです。以下はいくつかの便利な Office 365 report を PowerShell で作成する方法です:

  • すべてのメールボックスの詳細:
      Get-mailbox | get-MailboxStatistics
      
  • 過去 30 日間にログインされていないすべてのメールボックスの一覧:
      Get-Mailbox –RecipientType 'UserMailbox' | Get-MailboxStatistics | Sort-Object LastLogonTime | Where {$_.LastLogonTime –lt ([DateTime]::Now).AddDays(-30) } | Format-Table DisplayName, LastLogonTime
      
  • 送信量・受信量が最も多い送信者と受信者に関するレポート:
      Get-MailTrafficTopReport
      
  • すべてのグループとそのメンバーに関するレポート:
      function Get-AllO365Members
{
    Try
    {   
     $O365Groups=Get-UnifiedGroup
        foreach ($O365Group in $O365Groups) 
        { 
            Write-Host "Group Membership: " $O365Group.DisplayName -ForegroundColor Green
            Get-UnifiedGroupLinks –Identity $O365Group.Identity –LinkType Members
            Write-Host
        } 
    }
    catch [System.Exception]
    {
        Write-Host -ForegroundColor Red $_.Exception.ToString()   
    } 
}
Get-AllO365Members
      

ほとんどの レポート用の cmdlet は 2018 年 1 月に非推奨(deprecated)となり、新しい MS Graph Reporting API に置き換えられました。そのため、一部のレポートは現在 Office 365 Security & Compliance Center でのみ利用可能です。

ご覧のとおり、PowerShell を使った Office 365 の管理は、Microsoft Windows Server と同様に高速で簡単です。Office 365 環境に対して行うすべての変更を必ず監査(audit)してください。そうすることで、問題のトラブルシューティングや復旧をより素早く行えるようになります。Office 365 環境でネイティブ監査を設定する方法については、当社の Exchange Online Auditing Quick Reference GuideExchange Online Mailbox Auditing Quick Reference Guide をご覧ください。Office 365 環境で何が起きているのかを、実行可能なインテリジェンスとして把握し、柔軟なレポート、先回りのアラート、Google のような検索など、さらに多くの機能も必要であれば、 Netwrix Auditor for Office 365 の無料トライアルをお申し込みください。

共有する

もっと詳しく

著者について

Asset Not Found

Jeff Melnick

システムエンジニアリング ディレクター

Jeff は Netwrix における Global Solutions Engineering の元ディレクターです。彼は長年にわたり Netwrix のブログ執筆者であり、講演者、プレゼンターとしても活躍しています。Netwrix のブログでは、Jeff がシステム管理の体験を大きく改善できるライフハックや、役立つヒント、ちょっとしたコツを共有しています。