M365groups PowerShell SharePoint Online

Jak pracovat s přihlašovacími údaji v PS

Napsáno Matěj Groman

Z vlastní zkušenosti jistě víte, že zadávání přihlašovacích údajů při každém otevření PowerShellu může být otravné, zejména pokud máte několik různých účtů a potřebujete mezi nimi přepínat. Možností jak pracovat s přihlašovacími údaji je v Powershellu spousta, o mnohých jsem donedávna ani nevěděl, proto jsem se rozhodl se s vámi o některé v tomto článku podělit.

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:

Shell

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:

Shell

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ářů!

Sending
User Review
5 (2 votes)

O autorovi

Matěj Groman

IT specialista
Institute of Computer Science
Masaryk University
Zaměření: SharePoint Online, O365, Security&Compliance, PowerShell

Zanechat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

error: Obsah je cháněný / Content is protected !!