Přihlašovací údaje v PS
Jistě jste už použili příkaz Get-Credential, který se vás zeptá na přihlašovací údaje a následně vytvoří objekt PSCredential, kde je uloženo jméno a heslo ve formě SecureString.
První ulehčení tedy může být napsat si script, kde se na začátku přes Get-Credential zeptáme uživatele na přihlašovací údaje a pak tento objekt předáme různým službám jako AzureAD, SPOnline atd. Script by mohl vypadat nějak takto:
Jde to ale nějak lépe? Toto byla cesta, kterou jsem používal celkem dlouho, než jsem potřeboval vytvořit automaticky spouštěné scripty. Protože prompt na údaje čeká interakci uživatele, nelze ho pro plánované úlohy použít.
Po troše googlení jsem narazil na velmi zajímavý projekt od PAULA CUNNINGHAMA, který v článku zde podrobně popisuje podobný problém, který jsem řešil i já. Pokud zvládáte angličtinu, doporučuji si jeho článek přečíst, velmi dobře popisuje princip fungování a postup instalace. Já se ho ve zkratce pokusím popsat i zde.
Příprava
Nejprve je třeba si z GitHubu stáhnout ps1 soubor, kde jsou obsaženy dvě funkce New-StoredCredential a Get-StoredCredential. Po stažení doporučuji obě funkce vložit do svého PS profilu (článek zde) stejně jako proměnnou $KeyPath.
Funkce pracují se soubory xxx.cred, které jsou uloženy ve složce definované v $KeyPath a xxx je username. Obsahem souboru je heslo převedené do SecureString, které dokáže rozšifrovat pouze stejný uživatel na stejném PC, kde bylo vytvořeno. Jedná se tedy o podobný princip jako u SSH klíčů. Tyto soubory je i tak vhodné chránit, ale dá se říci, že se jedná o bezpečnou práci s hesly.
Vytvoření záznamu
Pro vytvoření nového záznamu lze použít funkci New-StoredCredential bez parametrů. Vyskočí na vás klasické okno jako při použití Get-Credential. Zde vyplníte uživatelské jméno a heslo a potvrdíte.
Výsledkem bude nový soubor username.cred ve složce definované v $KeyPath.
Použití záznamu
Nyní přijde to nejlepší. Pro použití záznamu lze použít Get-StoredCredential s parametrem -List pro výpis všech záznamů nebo -Username xxx, který vrací objekt PSCredential s přihlašovacími údaji korespondující s daným username. Tento objekt lze pak dát jako parametr téměř všem funkcím vyžadující -Credential.
Možnosti využití jsou velmi široké, script výše lze přepsat třeba takto:
Navíc tento script lze přidat do svého profilu, což znamená že při spuštění se rovnou přihlásíte do svých spravovaných služeb, aniž byste museli cokoliv zadávat.
Další využití může být pro spouštění plánovaných scriptů, jen je třeba údaje vytvořit pod stejným účtem, pod kterým se script spouští.
Shrnutí
Jak jsem psal, je mnoho způsobů, jak s přihlašovacími údaji pracovat. Při psaní článku jsem našel i cestu přes Windows Credential Manager (článek zde), což vypadá možná ještě lépe než mnou popsaný způsob. Až bude chvíle času, mám v plánu jej vyzkoušet a zkušenosti napsat sem.
A co vy? Jak pracujete s vašimi údaji? Máte nějaké tipy jak zefektivnit opakující se úkoly ať už v PowerShellu nebo v O365? Pokud ano, nebojte se napsat vaše zkušenosti nebo feedback do komentářů!