Automatisk tilldelning av Office365 licenser med Powershell

När man kör Office365 men har ett eget on-premise Active Directory, så använder man Azure AD Sync (AADSync) för att automatiskt synkronisera kontoinformationen till Azure AD så att kontona kan användas i Office365. Vad som dock inte sker automatiskt med något av de verktyg vi får från Microsoft, är tilldelning av licenser till dessa konton. Detta måste man manuellt gå in i Office365-portalen och göra i efterhand.

Men nu är Azure och Office365 så fantastiskt att vi även kan hantera allting med Powershell. Vilket betyder att automatisering plötsligt blir både möjligt och enkelt.

Det vi behöver göra är följande:

  1. Förbereda konton och lösenord som ska användas till scriptet
  2. Skapa ett Powershell-script
  3. Skapa en schemalagd aktivitet som kör scriptet

Förbered konton och lösenord

Vi behöver två konton:

  • Ett admin-konto med tillräckliga behörigheter att ändra licensinformationen i Office365
  • Ett konto som ska köra den schemalagda aktivitet som vi använder för att schemalägga scriptet

Vi kan naturligtvis använda samma konto för båda dessa syften, det är valfritt. Eftersom vi redan använder AADSync så har vi redan ett konto där som vi lämpligtvis kan använda som admin-konto även för det här ändamålet. Men om detta konto t.ex. bara ligger i molnet och inte finns i vårt lokala AD, då blir det svårt att använda för vår schemalagda aktivitet, varpå vi behöver ett separat konto för detta.

Jag gillar att köra mina aktiviteter med datorns egna konto, alltså Local System, för att slippa ha ett dedikerat användarkonto, och kommer göra så i det här exemplet.

Nästa steg är att spara ned lösenordet för detta admin-konto på ett säkert sätt så att vi kan använda oss av det i scriptet. Här är nu det viktiga att se till att det konto vi använder för att köra den schemalagda aktiviteten kan läsa detta lösenord. Eftersom vi kommer spara lösenordet i krypterad form så kommer enbart detta utvalda konto att kunna läsa det.

Eftersom jag vill köra med kontot Local System måste jag därmed skapa det krypterade lösenordet med System-kontot. Ett enkelt sätt att göra detta är att ladda ned PsExec och sen köra:

psexec.exe -i -s powershell.exe

På så vis startar jag Powershell med System-kontot. Detta gör vi på den maskin där den schemalagda aktiviteten ska köras (lämpligtvis samma server som kör AADSync). Lösenordet kommer nämligen bara att kunna läsas av detta konto, på just denna dator, och ingen annanstans.

I Powershell kör vi nu följande:

I prompten skriver vi nu in lösenordet för det admin-konto vi kommer använda oss av i scriptet. Detta kommer sparas i krypterad form i filen C:\Scripts\DirSyncCreds.txt och bara vara läsbart för System-kontot på just den här datorn.

Skapa scriptet

För att tilldela en licens till en användare i Office365 behöver vi göra två saker:

  • Välja en licens och tilldela denna. Detta görs med cmdleten Set-MsolUserLicense 
  • Välja en location, dvs förmodligen Sverige för oss, som användaren tillhör. För detta används cmdleten Set-MsolUser

Så i grund och botten är det bara två enkla cmdlets vi behöver köra. För att göra en lite mer komplett lösning kan det vara en bra idé att lägga till lite logging och liknande i scriptet. Eftersom hela det här exemplet förmodligen är mest intressant för små och mellanstora organisationer, där man kanske inte har så mycket bra övervakningsverktyg, och där konton inte skapas så ofta, så har jag i mitt script-exempel lagt med att scriptet helt enkelt mailar någon administratör varje gång en licens tilldelats någon användare, eller om någonting har misslyckats. För att detta ska fungera måste det finnas en SMTP-server någonstans på nätverket som vi kan skicka mailet genom. Har du ingen sådan kan du enkelt lägga till en, då det finns en färdig sådan roll i Windows Server. Detta är dock utanför den här guiden.

Vi behöver också ett sätt att urskilja vilka användare som faktiskt ska få en licens, och det lättaste sättet här är att använda en vanlig AD-grupp. Har vi flera olika licenser som vi vill använda så skapar vi helt enkelt flera grupper. I det här script-exemplet utgår vi dock från bara en enda licens, men det är väldigt enkelt att lägga till fler om man så vill.

Scriptet ser ut så här:

Scriptet kräver följande för att fungera:

Spara ned scriptet och ändra variablerna högst upp i scriptet och fyll i korrekt admin-konto, sökväg till lösenordsfilen (som vi skapade tidigare), licens, AD-grupp, mailadresser, osv.

Kontrollera att allting fungerar genom att köra scriptet manuellt. Lägg till flaggan -Verbose så loggas hela förloppet i konsolen.

Skapa schemalagd aktivitet

När scriptet är testat och fungerar så är det bara att schemalägga det med en vanlig Windows schemalagd aktivitet. Hur ofta den ska köras är såklart valfritt, men AADSync körs t.ex. som standard var 3:e timme, så att matcha det schemat kan vara en ide.

Konfigurera följande i aktiviteten:

  • Kontot som köra aktiviteten (SYSTEM i det här exemplet)
  • Schema
  • Action:
    Program: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    Argument: -NoProfile -ExecutionPolicy Bypass -File C:\Scripts\Set-O365License.ps1

Ändra namn och sökväg till scriptet så att det matchar din miljö. Därefter kan vi luta oss tillbaka och se hur det trillar in ett litet mail i vår inkorg varje gång vi skapar en ny användare, som berättar att denne automatiskt fått sin O365-licens tilldelad.

 

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Lämna ett svar

Your email address will not be published.

Fyll i svar på den enkla captcha-frågan nedan för att få kommentera * Time limit is exhausted. Please reload CAPTCHA.