Skip to content

MS-LUF/Use-AzureAD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

Use-AzureAD

Simple PowerShell module to manage your Azure Active Directory Tenant (focusing on Administrative Unit features) when AzureADPreview cannot handle it correctly ;-)

(c) 2021 lucas-cueff.com Distributed under Artistic Licence 2.0 (https://opensource.org/licenses/artistic-license-2.0).

Notes

currently Powershell Core and AzureADPreview are not working well together (logon / token request issue) The issue is opened here
Waiting for the fix, this module will work only with Windows Powershell 5.1

Notes version :

0.5 - first public release - beta version

  • cmdlet to get a valid access token (MFA supported) for Microsoft Graph Beta APIs
  • cmdlet to get a valid token for Microsoft Graph API standard / cloud endpoint (ressource graph.windows.net) and be able to use AzureADPreview cmdlets without reauthenticating
  • cmdlet to get all properties available (ex : extensionattribute) for an AAD user account
  • cmdlet to set a web proxy to be used with Use-AzureAD and AzureADPreview cmdlets
  • cmdlet to get all info for current logged in (@ Azure AD Tenant and Graph APIs) AAD user account
  • cmdlet to create / synchronize your on premise Active Directory OUs with Azure AD Administrive Units (not managed currently through Azure AD Connect or other Microsoft cmdlets / modules)
  • cmdlet to add / synchronize your on premise Active Directory users DN with Azure AD Administrative Unit membership (not managed currently through Azure AD Connect or other Microsoft cmdlets / modules)
  • cmdlet to add / remove Azure AD user account in Administrative Unit Role (everything managed in an easy and smooth way including, enabling the AAD role if missing and so on)
  • cmdlet to list all members of an Azure AD Administrative Unit (limited @ first 100 objets with default MS cmdlet... #WTF)

0.6 - beta version

  • cmdlet to get your current schema for a specific provisionning agent / service principal
  • cmdlet to update your current schema for a specific provisionning agent / service principal
  • cmdlet to get your default schema (template) for Azure AD Connect Cloud Provisionning
  • cmdlet to get a valid token (MFA supported) for Microsoft Graph API standard / cloud endpoint and MSOnline endpoint and be able to use MSOnline cmdlets without reauthenticating

0.7 - beta version

  • cmdlet to create an Administrative Unit with hidden members
  • cmdlet to get Administrative Units with hidden members
  • cmdlet to create delta view for users, groups, admin units objects
  • cmdlet to get all updates from a delta view for users, groups, admin units objects

0.8 - beta version

  • fix Set-AzureADproxy cmdlet : not able to set correctly the parameter ProxyUseDefaultCredentials
  • new cmdlets to add, get, update Azure AD Dynamic Membership security groupstest dynamic membership
  • Note : in current release of AzureADPreview I have found a bug regarding Dynamic group (on all *-AzureADMSGroup cmdlets). When you try to use them, you have a Null Reference Exception :
    System.NullReferenceException,Microsoft.Open.MSGraphBeta.PowerShell.NewMSGroup
  • new cmdlet to test user membership of dynamic group membership

0.9 - beta version

add functions / cmdlets related to group and licensing stuff missing from azureadpreview current module

  • cmdlet to get all Azure AD User with licensing error members of a particular group
  • cmdlet to get licensing info of a particular group
  • cmdlet to add or remove a license on an Azure AD Group
  • cmdlet to get licensing assignment type (group or user) of a particular user

1.0 - beta version

  • add service principal management for authentication and fix / improve code using DaveyRance remark

1.1 - beta version

  • update authority URL for Service Principal to be compliant with last version of ADAL library

1.2 - beta version

  • update Sync-ADOUtoAzureADAdministrativeUnit (update OU filter name to use regex instead)
  • update cmdlet Sync-ADUsertoAzureADAdministrativeUnitMember (update OU filter name to use regex instead)
  • update cmdlet Get-AzureADUserCustom (Get-AzureADUserallproperties)
  • add cmdlet Get-AzureADServicePrincipalCustom
  • add cmdlet Get-AzureADAdministrativeUnitCustom
  • add cmdlet Add-AzureADAdministrativeUnitMemberCustom
  • add cmdlet New-AzureADAdministrativeUnitCustom (New-AzureADAdministrativeUnitHidden)
  • add cmdlet Watch-AzureADAccessToken (be able to watch and auto renew Access Token of a service principal before expiration - useful in a script context when operation can take more than one hour)
  • update cmdlet Set-AzureADProxy (add bypassproxy on local option)

1.3 - beta version

  • add cmdlet to get administrative units of a user account and remove a user account from an administrative unit (thanks to Achraf Amor)
    • Get-AzureADUserAdministrativeUnitMemberOfCustom
    • Remove-AzureADAdministrativeUnitMemberCustom

1.4 - beta version

  • add cmdlets to get and update Azure AD organization information
    • Get-AzureADOrganizationCustom
    • Update-AzureADOrganizationCustom

1.5 - beta version

  • add cmdlet to get Azure AD Connect synchronization errors through MS Graph API to replace Get-MsolDirSyncProvisioningError
    • Get-AzureADOnPremisesProvisionningErrors

1.6 - beta version

  • fix CallDepthOverflow on huge pages response
  • add cmdlet Invoke-APIMSGraphBetaPaging

1.7 - last release - beta version

Why another Azure AD module ?

I am a new player on all Azure AD stuff. Currently, I am interesting in all directory stuff, including synchronization for my new job. When I was trying to understand how this **** works, I understand quickly that the current tools available from MS are buggy and / or not managing everything... I have opened several request for change on Azure feedback website and also I have voted for several ones... Here are my current issues, I have tried to resolve them with this PowerShell Module :

  • the BETA API of MS Graph are more powerfull than the v1.0 used by the PowerShell modules AzureAD or AzureADPreview
    • for instance, Get-AzureADUser cannot give you the value of the extensionattributexx !!!
    • You can create dynamic group based on the value hosted in those attributes but you cannot get the value of them for a user account... a shame...
  • There is no easy way to be authenticated at the same time on MS Graph API v1.0 and the Beta ones because Microsoft used a different endpoint in the Powershell modules AzureAD and AzureADPreview :
    • graph.windows.net is used by default in the MS modules, the Beta Graph is available with grap.microsoft.com/beta/
    • ==> the ressources URI are different so you must request tokens 2 times !!!
  • there is no tool available to synchronize on premise AD Organizational Unit and Azure AD Administrative unit
    • you must do it manually !
  • there is no tool available to add an Azure AD User account automatically to an Administrative Unit based on criteria
    • again you must do it manually !
  • there is no tool avaialable for massive provisionning in administrative unit
    • except bulk import with CSV from the portal but... wait we are in 2020 not in the 1990 !
  • the way Microsoft is managing the Administrative Unit role membership is a nightmare
    • for adding someone :
      • you need to be sure the role is enable from the directory template role,
      • then resolve your self all required GUIDs,
      • create some object to build the request,
      • then submit the request...
      • ==> wait, in on prem AD we are talking about a one liner stuff with easy name to remember !
  • several cmdlet are buggy and not implement paging feature
    • for instance you are limited to the first 100 objects only when you want to get all members of an admin unit... (Get-AzureADAdministrativeUnitMember)
    • the API administrativeUnits is able to handle it but they just forgot to implement it in the PowerShell module...
  • missing Graph APIs implementations
    • licensing stuff limited to user object / ressources and not able to investigate licensing issue correctly except by using the deprecated module MSOnline

Azure requests for changes opened

https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/40276534-azureadpreview
https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/40276597-azureadpreview-get-azureadadministrativeunitmem
https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/40276621-azureadpreview-odata-advanced-paging
https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/39167986-sync-onprem-ad-ous-to-aad-administrative-units
https://feedback.azure.com/forums/34192--general-feedback/suggestions/40542640-ms-graph-api-evaluatedynamicmembershipresult-on-gr

How-to

a how-to is available here

install Use-AzureAD from PowerShell Gallery repository

You can easily install it from powershell gallery repository
https://www.powershellgallery.com/packages/Use-AzureAD/
using a simple powershell command and an internet access :-)

	Install-Module -Name Use-AzureAD

import module from PowerShell

	C:\PS> import-module Use-AzureAD.psm1

module content

documentation in markdown available here

function

  • Clear-AzureADAccessToken
  • Connect-AzureADFromAccessToken
  • Connect-MSOnlineFromAccessToken
  • Get-AzureADAccessToken
  • Get-AzureADAdministrativeUnitAllMembers
  • Get-AzureADAdministrativeUnitCustom
  • Get-AzureADAdministrativeUnitHidden
  • Get-AzureADConnectCloudProvisionningServiceSyncDefaultSchema
  • Get-AzureADConnectCloudProvisionningServiceSyncSchema
  • Get-AzureADDynamicGroup
  • Get-AzureADGroupLicenseDetail
  • Get-AzureADGroupMembersWithLicenseErrors
  • Get-AzureADMyInfo
  • Get-AzureADObjectDeltaView
  • Get-AzureADServicePrincipalCustom
  • Get-AzureADTenantInfo
  • Get-AzureADUserCustom
  • Get-AzureADUserLicenseAssignmentStates
  • Invoke-APIMSGraphBeta
  • New-AzureADAdministrativeUnitCustom
  • New-AzureADDynamicGroup
  • New-AzureADObjectDeltaView
  • Remove-AzureADDynamicGroup
  • Set-AzureADAdministrativeUnitAdminRole
  • Set-AzureADDynamicGroup
  • Set-AzureADGroupLicense
  • Set-AzureADProxy
  • Sync-ADOUtoAzureADAdministrativeUnit
  • Sync-ADUsertoAzureADAdministrativeUnitMember
  • Test-ADModule
  • Test-AzureADAccessTokenExpiration
  • Test-AzureADAccesToken
  • Test-AzureADUserForGroupDynamicMembership
  • Update-AzureADConnectCloudProvisionningServiceSyncSchema
  • Watch-AzureADAccessToken
  • Get-AzureADUserAdministrativeUnitMemberOfCustom
  • Remove-AzureADAdministrativeUnitMemberCustom
  • Get-AzureADOrganizationCustom
  • Update-AzureADOrganizationCustom
  • Get-AzureADOnPremisesProvisionningErrors
  • Invoke-APIMSGraphBetaPaging
  • New-AzureADMSGroupCustom
  • Set-AzureADMSGroupCustom

alias

  • Get-AzureADUserAllInfo

About

cmdlets to manage your Azure Active Directory Tenant (focusing on Administrative Unit features) when AzureADPreview cannot handle it correctly

Topics

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors