如何在连接到 Office 365 的网络中审核 Yammer 用户

公司的 Yammer 网络中可能有已离职的用户。或者,某些 Yammer 用户可能使用自己的电子邮件和密码登录,因为他们没有相应的 Office 365 帐户。为了分析此类情况并采取操作,可以审核 Yammer 用户。这包括导出 Yammer 用户列表、在 Office 365 中查找这些 Yammer 用户的状态,以及分析结果并采取操作。

除了审核 Yammer 用户以外,可能还需要了解有关如何通过 Office 365 无缝管理 Yammer 服务的详细信息。例如,可在 Yammer 用户的整个生命周期中通过 Office 365 对其进行管理强制 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 支持专员。

×