Seriál Windows PowerShell v3 – PowerShell a Azure Active Directory (část 36.)

Ještě než se pustíme do dnešního tématu, vrátil bych se rád ke konferenci TechNet NA 2013, která proběhla před pár dny v New Orleans. A to z toho důvodu, že byly odhaleny některé vlastnosti nové verze PowerShellu (pravděpodobně bude označen jako v4). Bude totiž obsahovat funkcionalitu, kterou tvůrci nazvali Desired State Configuration (DSC). DSC umožňuje vytvořit skript, který určí požadovaný stav systému a pokud systém tento stav nesplňuje, je okamžitě updatován. Syntaxe je velmi podobná syntaxi pro workflow ve verzi 3. Toto je například velmi jednoduchá definice DSC pro ověření instalace (či instalaci) webového serveru:

Configuration NejakyWeb 

    Node ("Web1"
    { 
        WindowsFeature IIS 
        { 
            Ensure = "Present" 
            Name = "Web-Server" 
        } 
    } 
}

Jelikož se jedná o velice zajímavou věc, doporučuji vám podívat se na záznam prezentace na Channel9: https://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/MDC-B302.

V minulém díle jsem slíbil malý dárek. Pokud by vás zajímalo více příkladů na přechod z cmd do PowerShellu, můžete se podívat na následující soubor: https://aka.ms/PsCmdGuideAD

Jak se připojit do Azure Active Directory (AAD)

Již v dubnovém Flashi ukazoval mistr Skriptík cmdlet Connect-MsolService. Tento cmdlet je součástí modulu MSOnline (tento modul a postup jeho instalace je popsán na https://aka.ms/aadposh). Pro připojení do AAD zadejte zároveň přihlašovací údaje oprávněné osoby (pokud to není váš aktuálně použitý účet).

PS> $cred = Get-Credential admin@myFirm.onmicrosoft.com 
PS> Connect-MsolService –Credential $cred 
PS> Get-MsolDomain

Vzhledem k tomu, že Connect-MsolService nedá nijak vědět, že je připojen (žádná zpráva = dobrá zpráva), můžete si pomocí Get-MsolDomain alespoň ověřit, že vidíte vaše domény. Pokud by došlo k jakémukoli problému při připojování, zobrazí se chybové hlášení:

PS> Connect-MsolService -Credential $cred

Connect-MsolService : Unable to authenticate your credentials. Make sure that your user name is in the format: <username>@<domain>. If this issue persists, contact Support. 
At line:1 char:1 
+ Connect-MsolService -Credential $cred 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo          : OperationStopped: (:) [Connect-MsolService], MicrosoftOnlineException 
+ FullyQualifiedErrorId : 0x80048862,Microsoft.Online.Administration.Automation.ConnectMsolService

Nejvíce operací můžeme v AAD provádět s uživateli, doménami a skupinami (což samozřejmě odpovídá funkcionalitě AADVeselý obličej.

PS> Get-Command -Module MSOnline | Group Noun | Sort Count -Desc | ft Count, Name -Auto

Count Name 
----- ---- 
    5 MsolUser 
    5 MsolDomain 
    4 MsolGroup 
    4 MsolServicePrincipal 
    3 MsolFederatedDomain 
    3 MsolServicePrincipalCredential 
    3 MsolGroupMember 
    3 MsolRoleMember 
    2 MsolPartnerInformation 
    2 MsolPasswordPolicy 
    2 MsolContact 
    2 MsolDomainFederationSettings

Zbývající cmdlety se vyskytují pro daný typ už pouze jednou.

Pro práci s uživateli máme k dispozici

PS> Get-Command -Noun MsolUser

CommandType Name 
----------- ---- 
Cmdlet      Get-MsolUser 
Cmdlet      New-MsolUser 
Cmdlet      Remove-MsolUser 
Cmdlet      Restore-MsolUser 
Cmdlet      Set-MsolUser

Což odpovídá dostupným cmdletů z on-premise AD:

PS> Get-Command -Noun ADUser

CommandType Name 
----------- ---- 
Cmdlet      Get-ADUser 
Cmdlet      New-ADUser 
Cmdlet      Remove-ADUser 
Cmdlet      Set-ADUser

A chybějící Restore-MsolUser je v AD zastoupen cmdletem Restore-ADObject. Jednou z nejčastějších operací v AAD bude nastavení zapomenutého hesla pro určitého uživatele:

PS> Set-MsolUserPassword -UserPrincipalName user@myFirm.onmicrosoft.com -NewPassword HESL0

Pokud zadáte změnu hesla tímto způsobem, bude uživatel po přihlášení vyzván k nastavení vlastního hesla (jako když v doméně nastavíte User must change password at next logon). Pokud tuto vlastnost nechcete, můžete specifikovat další parametr:

PS> Set-MsolUserPassword -UserPrincipalName user@myFirm.onmicrosoft.com -NewPassword HESL0 -ForceChangePassword:$false

Pokud byste chtěli nastavit heslo pro všechny uživatele v doméně, můžete použít následující příkaz:

PS> Get-MsolUser –All | Set-MsolUserPassword –NewPassword HESLO

Všimněte si, že AAD používá switch All pro zobrazení všech uživatelů. Jestliže chcete pro některé účty nastavit expiraci hesla na never, můžete použít Set-MsolUser.

PS> Set-MsolUser -UserPrincipalName user@myFirm.onmicrosoft.com -PasswordNeverExpires $true

Co když chcete nejdříve zjistit, které účty mají nastaveno PasswordNeverExpires? Ještě stále si vystačíme se základními cmdlety:

PS> Get-MsolUser –All |? PasswordNeverExpires –eq $true | Select UserPrincipalName, PasswordNeverExpires

Tento cmdlet má několik dalších parametrů, které opět odpovídají zvyklostem z AD, jedná se o (výpis jsem drobně zkrátil):

PS> (Get-Command -Name Set-MsolUser | Select -ExpandProperty Parameters).Keys | Sort 
AlternateEmailAddresses 
AlternateMobilePhones 
BlockCredential 
City 
Country 
Department 
DisplayName 
Fax 
FirstName 
ImmutableId 
LastName 
MobilePhone 
ObjectId 
Office 
PasswordNeverExpires 
PhoneNumber 
PostalCode 
PreferredLanguage 
SoftDeletionTimestamp 
State 
StreetAddress 
StrongPasswordRequired 
TenantId 
Title 
UsageLocation 
UserPrincipalName

Pokud již máte uživatele vytvořené, můžete je začít přiřazovat do skupin. Vzhledem k tomu, že cmdlet Add-MsolGroupMember potřebuje ID objektu, se kterým pracuje, je dobré si nejdříve uložit skupinu a uživatele do proměnných a poté je použít. Ideálně bychom pro přiřazení více uživatelů do skupiny prováděli následující příkaz ve smyčce, např. foreach ($user in (Get-MsolUser -All)):

PS> Add-MsolGroupMember -GroupObjectId $user.ObjectId -GroupMemberObjectId $group.ObjectId

Závěrem

Cílem dnešního článku bylo ukázat, že správa AAD (O365) se v ničem neliší od správy on-premise Active Directory (pokud se bavíme o PowerShellu, samozřejmě). Pokud jednou máte základy, dokážete velice jednoduše přenést vaše znalosti do jiného prostředí. A pokud se bavíme o O365, můžete vaše PowerShell-Fu použít například i při správě Exchange Online.