Мне нужно иметь возможность экспортировать имя пользователя или адрес электронной почты (неважно какой), компанию (из поля компании на вкладке организации в учетной записи пользователя консоли администратора Exchange) и тип лицензии (например, обмен через Интернет e1, обменять онлайн-киоск и т.д ...)
Я могу экспортировать оба значения в двух операторах в два отдельных файла, но это не приносит мне особой пользы.
Я могу экспортировать имя пользователя и тип лицензии следующим образом:
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.
Любая помощь будет оценена. Спасибо.
Небольшое исправление для поддержки новейших командлетов:
$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
У меня это сработало отлично.
Это приведет к экспорту лицензированных пользователей с типом лицензии
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
В первом примере вы выбираете 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
Намного проще получить обзор и поддерживать.
Этот сценарий отлично работал у меня, но я не мог экспортировать его напрямую в CSV, поэтому я использовал копирование / вставку из в Excel.
Get-MsolUser -all | Where-Object {$_.isLicensed -eq "True"} | Select UserPrincipalName,DisplayName,Licenses | Out-GridView
Так как вы не знаете PowerShell или сценариев, вам следует автоматизировать все журнал экспорта powershell процесс со стандартными инструментами Windows. Есть много сторонних инструментов, которые могут помочь. попробуйте поискать их. это облегчит твою работу
Я только что протестировал это, и это ОТЛИЧНО СПАСИБО ЗА ВАШУ ПОМОЩЬ!
$lines = @()
foreach($msolUser in (Get-MSOLUser -ALL | where {$_.isLicensed -eq $true}))
{
$UserInfo = Get-User -identity $msolUser.UserPrincipalName
foreach($license in $msolUser.Licenses)
{
$lines += New-Object PsObject -Property @{
"Nom/Prenom"="$($UserInfo.DisplayName)";
"Societe"="$($UserInfo.Company)";
"AdressePrincipale"="$($UserInfo.UserPrincipalName)";
"Licences"="$($license.AccountSKUid)"
}
}
}
$lines | Export-CSV C:\out1.csv -Delimiter ";" -Encoding Unicode