如何稽核已連結 Office 365 的網路中的 Yammer 使用者

貴公司的 Yammer 網路可能具有已不在貴公司任職的使用者。或者,部分 Yammer 使用者可能會使用他們的電子郵件及密碼登入,因為他們沒有對應的 Office 365 帳戶。如要分析這類情況並採取行動,您可以稽核您的 Yammer 使用者。這涉及匯出 Yammer 使用者清單、在 Office 365 中找出這些 Yammer 使用者的狀態,以及分析結果並採取行動。

除了稽核 Yammer 使用者以外,建議您進一步了解您可如何流暢地使用 Office 365 管理 Yammer 服務。例如,您可以從 Office 365 管理 Yammer 使用者整個生命週期,以及針對 Yammer 使用者強制執行 Office 365 身分識別

匯出 Yammer 使用者清單

在您執行稽核程式碼之前,您會建立包含使用者帳戶清單的輸入檔,以供指令碼使用。您可以使用 Yammer 的 [匯出使用者] 功能來建立輸入檔。

  1. 在 Yammer 的左側窗格中,選擇 [系統管理] > [使用者管理]。

    已醒目提示 [使用者管理] 的 Yammer 系統管理功能表
  2. 在 [邀請使用者] 頁面上的左側窗格中,選擇 [匯出使用者]。

    Yammer 匯出使用者功能表
  3. 在 [匯出使用者] 頁面上,選擇 [匯出所有使用者],然後選擇 [匯出]。

    Yammer 匯出使用者選項 - [匯出所有使用者] 或 [匯出所有使用者,從下列日期之後]
  4. 儲存匯出的檔案。檔案會以壓縮檔格式儲存,並使用 .zip 副檔名。

  5. 移至您儲存壓縮檔的位置,然後解壓縮檔案。

    附註: 壓縮檔中包含多個檔案。您只需要 名為 users.csv 的檔案。

在 Office 365 中找出 Yammer 使用者狀態

  1. 安裝並設定適用於 Windows PowerShell 的 Azure Active Directory 模組。如需相關指示,請參閱下列文件:Azure AD 說明

  2. 複製下列範例程式碼,並貼到記事本等文字編輯器中,然後將檔案另存為 UserMatchToAzureAD.ps1。

    您可以視貴組織的需求自由修改。

    <# 
    Copyright 2016
    Microsoft Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions
    and limitations under the License.

    Yammer auditing tool for Office 365 looks for active Yammer accounts
    that are missing from Office 365 / Azure AD.

    Takes User.csv file from Yammer Data Export as the input file.
    Compares all Active Yammer accounts in the input file to user
    lookup in Azure AD. User is searched by both email and proxyAddresses.

    The output csv file is exactly matching the source file, but it includes
    three new columns: exists_in_azure_ad, object_id and azure_licenses:
    exists_in_azure_ad: Will be TRUE or FALSE, and signals that the user
    can be, or cannot be found in Office 365 / Azure AD
    object_id: For users that can be found, lists the ObjectId in Azure AD
    azure_licenses: For users that can be found, lists the SKUs assigned to the
    user in Azure AD. This information can be used to double check
    licenses are assigned correctly for each user.
    Params -
    UseExistingConnection: Defines if the script should try to use an existing
    Azure AD connection. Will prompt for credentials and will
    start a new connection if $FALSE. Default is $FALSE
    InputFile: Source CSV file of users, coming from the Yammer User Export tool
    OutputFile: Output location to save the final CSV to

    Example -
    UserMatchToAzureAD.ps1 -InputFile .\Users.csv -OutputFile .\Results.csv
    #>
    Param(
    [bool]$UseExistingConnection = $FALSE,
    [string]$InputFile = ".\Users.csv",
    [string]$Outputfile = ".\Results.csv"
    )
    if(!$UseExistingConnection){
    Write-Host "Creating a new connection. Login with your Office 365 Global Admin Credentials..."
    $msolcred = get-credential
    connect-msolservice -credential $msolcred
    }
    Write-Host "Loading all Office 365 users from Azure AD. This can take a while depending on the number of users..."
    $o365usershash = @{}
    get-msoluser -All | Select userprincipalname,proxyaddresses,objectid,@{Name="licenses";Expression={$_.Licenses.AccountSkuId}} | ForEach-Object {
    $o365usershash.Add($_.userprincipalname.ToUpperInvariant(), $_)
    $_.proxyaddresses | ForEach-Object {
    $email = ($_.ToUpperInvariant() -Replace "SMTP:(\\*)*", "").Trim()
    if(!$o365usershash.Contains($email))
    {
    $o365usershash.Add($email, $_)
    }
    }
    }
    Write-Host "Matching Yammer users to Office 365 users"
    $yammerusers = Import-Csv -Path $InputFile | Where-Object {$_.state -eq "active"}

    $yammerusers | ForEach-Object {
    $o365user = $o365usershash[$_.email.ToUpperInvariant()]
    $exists_in_azure_ad = ($o365user -ne $Null)
    $objectid = if($exists_in_azure_ad) { $o365user.objectid } else { "" }
    $licenses = if($exists_in_azure_ad) { $o365user.licenses } else { "" }

    $_ | Add-Member -MemberType NoteProperty -Name "exists_in_azure_ad" -Value $exists_in_azure_ad
    $_ | Add-Member -MemberType NoteProperty -Name "azure_object_id" -Value $objectid
    $_ | Add-Member -MemberType NoteProperty -Name "azure_licenses" -Value $licenses
    }

    Write-Host "Writting the output csv file..."
    $yammerusers | Export-Csv $Outputfile -NoTypeInformation

    Write-Host "Done."
  3. 從適用於 Windows PowerShell 的 Azure Active Directory 模組命令視窗中,按下列範例執行命令,傳遞從 Yammer 匯出的輸入檔和輸出檔的位置。

    範例使用方式︰

    UserMatchToAzureAD.ps1 -InputFile .\Users.csv -OutputFile .\Results.csv
    

    如需如何執行指令碼的詳細資訊,請參考上述的 PS1 檔案。

分析結果並採取動作

  1. 開啟結果 CSV 檔案,並篩選出 exists_in_azure_ad 資料行顯示為 FALSE 的所有資料列。

    這些是存在於 Yammer 中,但卻不存在於 Office 365 / Azure AD 中的帳戶。針對每個資料列決定您是否需要執行下列動作:

    • 如果使用者不應有存取權,便可將 Yammer 中的使用者帳戶暫時停權。

    • 在 Office 365 / Azure AD 中建立這個使用者。

  2. 完成這些操作後,我們建議您從頭再次執行這些步驟,以確認現在可在 Office 365 與 Azure AD 中找到所有使用者。

如果您強制執行 Office 365 身分識別,則在完整稽核完成後,建議您考慮登出目前所有的使用者,您便能確認目前已登入的所有人都是以 Office 365 認證登入,而非使用快取認證。如果您選擇執行此動作,請確認您已事先告知使用者。如需詳細資訊,請參閱針對 Yammer 使用者強制執行 Office 365 身分識別

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×