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: http://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: http://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 http://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.

David Moravec, MVP, Mainstream Technologies