Office 365 Powershell - 将用户、许可证类型和公司字段导出到 csv 文件

Office 365 Powershell - 将用户、许可证类型和公司字段导出到 csv 文件

我需要能够导出用户名或电子邮件地址(无论哪个)、公司(从 Exchange 管理控制台的用户帐户中的组织选项卡下的公司字段中)和许可证类型(例如 Exchange Online e1、Exchange Online Kiosk 等...)

我能够将两个语句中的两个值导出到两个单独的文件中,但这对我来说没有多大帮助。

我可以使用以下命令导出用户名和许可证类型:

Get-MSOLUser | % { $user=$_; $_.Licenses | Select {$user.displayname},AccountSKuid } | Export-CSV "sample.csv" -NoTypeInformation

并且,我可以通过以下内容获取公司价值:

Get-User | select company | Export-CSV sample.csv

另一个论坛上的某人建议这样做 -

$index = @{}
Get-User | foreach-object {$index.Add($_.userprincipalname,$_.company)}
Get-MsolUser | ForEach-Object { write-host $_.userprincipalname, $index[$_.userprincipalname], $_.licenses.AccountSku.Skupartnumber}

这似乎应该可以工作,但它没有在我的 powershell 中显示任何许可证信息,只是空白。而且我不知道如何将其导出到 csv 文件。

任何帮助都将不胜感激。谢谢。

答案1

这将导出具有许可证类型的许可用户

Get-MsolUser -All |
  Where {$_.IsLicensed -eq $true } |
  Select DisplayName,UsageLocation,@{n="Licenses Type";e={$_.Licenses.AccountSKUid}},SignInName,UserPrincipalName,@{n="ProxyAddresses";e={$_.ProxyAddresses}} | 
  Export-Csv -Path C:\_Cory\Test.csv -NoTypeInformation

答案2

稍作修复以支持最新的命令行:

  • 第 4 行更新为“$UserInfo = Get-MSOLUser -UserPrincipalName $msolUser.UserPrincipalName”
  • 第 2 行:添加 -All 参数

$lines = @()    foreach($msolUser in (Get-MSOLUser -All))    {
   $UserInfo = Get-MSOLUser -UserPrincipalName $msolUser.UserPrincipalName
   foreach($license in $msolUser.Licenses)
   {
       $lines += New-Object PsObject -Property @{
                   "Username"="$($UserInfo.DisplayName)";
                   "Company"="$($UserInfo.Company)";
                   "AccountSKUID"="$($license.AccountSKUid)"
                 }
   }    }    $lines | Export-CSV C:\output.csv -NoTypeInformation

对我来说,它非常有效。

答案3

在第一个例子中,您选择AccountSkuId属性,在第二个例子中,您选择AccountSKU.SkuPartNumber(我很确定它不存在)。

你的脚本/单行代码也不太容易阅读,这样怎么样:

$lines = @()
foreach($msolUser in (Get-MSOLUser))
{
    $UserInfo = Get-User -Identity $msolUser.UserPrincipalName
    foreach($license in $msolUser.Licenses)
    {
        $lines += @{
                    "Username"="$($UserInfo.DisplayName)";
                    "Company"="$($UserInfo.Company)";
                    "AccountSKUID"="$($license.AccountSKUid)"
                  }
    }
}
$lines | Export-CSV C:\output.csv -NoTypeInformation

更容易获得概览和维护。

答案4

这个脚本对我来说很有用,但我无法将其直接导出到 CSV,所以我使用复制/粘贴到 Excel 中。

Get-MsolUser -all | Where-Object {$_.isLicensed -eq "True"} | Select UserPrincipalName,DisplayName,Licenses | Out-GridView

相关内容