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ě AAD.
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.