1 votos

Dumping MsolAccountSku y UPN de una lista

Estoy buscando volcar una lista de licencias de MsolAccountSku que coincidan con un UPN de una lista.

Lo que estoy buscando sería algo como lo siguiente:

 user@domain.com tenant:STANDARDPACK
user2@domain.com tenant:ENTERPRISEPACK
 

No soy tan bueno en PS, por lo que me resulta difícil formatear la salida y colocarla con la UPN.

Lo que tengo hasta ahora:

 $readFile = `
  Get-Content "C:\temp\changelicense.csv"

  foreach($upn in $readFile){

$licensedetails = (Get-MsolUser -UserPrincipalName `
  $upn).Licenses
$licensedetails.AccountSKUId;

if ($licensedetails.Count -gt 0){
  foreach ($i in $licensedetails){
    $i.ServiceStatus 

  }
}
}
 

0voto

Esto es un poco más complicado que lo que usted pidió.
Pero tengo una vieja función que puede utilizar que se asigna a cada licencia de un usuario a la UPN del usuario y también muestra el nombre de pantalla.

La función utiliza una tabla hash de los más comunes SKU nombres y las traduce a los humanos versión legible de la licencia.

Si los productos de su Inquilino no está ahí, sólo tienes que añadir a la tabla Hash. El resultado final es un buen .archivo csv que puede ser fácilmente importados a Excel, por ejemplo, así que usted puede ordenar en una licencia o un usuario obtener una visión general de lo que lo utiliza.

Simplemente ejecute el siguiente código para cargar la función, a continuación, ejecute Get-LicenseUsage. Esto creará un archivo csv en el directorio de tu sistema PS está actualmente en (nombrado después de que el Inquilino).

<#
.SYNOPSIS
    Creates a list showing which users has assigned which licenses.

.DESCRIPTION
    Creates a list of all licenses and which user the license is assigned to.
    The list is then output to a csv file, the file is output in the directory the script is run in.
    The filename is automatically created and uses the company name of the Office 365 Tenant.

.EXAMPLE
    Get-LicenseUsage

.NOTES
    Author: Henrik Stanley Mortensen

#>
Function Get-LicenseUsage()
{
    process  {
        $SkuPartFriendlyName = @{
            ########### Enterprise SKU's################
            "STANDARDPACK" = "Enterprise E1"
            "ENTERPRISEPACK" = "Enterprise E3"
            "ENTERPRISEPACKWSCAL" = "Enterprise E4"
            "ENTERPRISEWITHSCAL" = "Enterprise E4"
            "ENTERPRISEPREMIUM_NOPSTNCONF" = "Enterprise E5 w/o PSTN Conferencing"
            "ENTERPRISEPREMIUM " = "Enterprise E5"
            "EMS" = "Enterprise Mobility Pack"
            "AAD_BASIC" = "Azure Active Directory Basic"
            "AAD_PREMIUM" = "Azure Active Directory Premium"
            ############ Business SKU's#################
            "EXCHANGESTANDARD" = "Exchange Online Plan 1"
            "O365_BUSINESS_ESSENTIALS" = "Business Essentials"
            "O365_BUSINESS" = "Business"
            "O365_BUSINESS_PREMIUM" = "Business Premium"
            ############ Standalone Products############
            "POWER_BI_STANDARD" = "Power BI"
            "FLOW_FREE" = "Flow"
            "POWER_BI_PRO" = "Power BI Pro"
            "POWER_BI_STANDALONE" = "Microsoft Power BI for Office 365"
            "PROJECTESSENTIALS" = "Project Online"
            "PROJECTPROFESSIONAL" = "Project Online Professional"
            "PROJECTONLINE_PLAN_1" = "Project Online"
            "PROJECTCLIENT" = "Project Pro for Office 365"
            "RIGHTSMANAGEMENT_ADHOC" = "Rights Management Adhoc"
            "VISIOCLIENT" = "Visio Pro for Office 365"
            "INTUNE_A" = "Intune A Direct"
            "CRMIUR" = "Dynamics CRM URI"
            "MCOMEETADV" = "Skype for Business PSTN Conferencing"
        }

        $lines = @()
        $array= New-Object System.Collections.ArrayList

        foreach($msolUser in (Get-MSOLUser -All | Where-Object {$_.isLicensed -eq $true}))
        {
            $i = 0
            $licenses = New-Object System.Collections.ArrayList
            foreach($SKU in $msolUser.licenses.AccountSku.SkuPartNumber) {
                #Runs the SkuPartNumber through the Friendly Name List to translate the license
                $licenses = $SkuPartFriendlyName.Item($msolUser.licenses[$i].AccountSku.SkuPartNumber)

                #Creates an object with information for the user license
                $lines = @{
                            "Display Name" = "$($msolUser.DisplayName)";
                            "Licenses" = "$licenses";
                            "Login" = "$($msolUser.UserPrincipalName)";
                            }

                $userInfo = New-Object -TypeName psobject -Property $lines

                #Adds the object to an array used for export
                $array.Add($UserInfo)
                $i++
            }
        }
        #Exports the array to a csv file
        $filename = (Get-MsolCompanyInformation).DisplayName + ' License Overview.csv'
        $filename = $filename -replace "/", "."
        $array | Select-Object Login, 'Display Name', Licenses | Export-CSV $filename -Encoding UTF8 -NoTypeInformation -Delimiter ";"
    }
}

0voto

Lex Puntos 316

Si está buscando salidas, solo muestre la UPN y su SKU asociada. Usted puede simplemente modificar la secuencia de comandos original. A menos que también tenga la intención de mostrar el plan de servicio, entonces tendría que incorporar la parte ServiceStatus

Aquí hay una edición, para solo mostrar la UPN y SKU

 $readFile = Get-Content "C:\temp\changelicense.csv"

foreach($upn in $readFile){

$licensedetails = (Get-MsolUser -UserPrincipalName $upn).Licenses

if ($licensedetails.Count -gt 0){
    foreach ($i in $licensedetails){
        $upn + " " + $licensedetails.accountSKUId }
  }
}
 

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: