CZ 
06.10.2024 Hanuš VÍTEJTE V MÉM SVĚTĚ

An English translation is available for this article. Pro tento článek je dostupný anglický překlad.
PowerShell - Application control and other uses

PowerShell - Ovládání aplikací a další použití

| Petr Bouška - Samuraj |
Další článek o užitečném nástroji (někdy i nezbytnosti) Microsoft PowerShell. Tentokrát si uvedeme nějaké speciální příklady použití, kdy můžeme řídit aplikace jako je MS Word a Outlook nebo přistupovat k Active Directory. PowerShell totiž umožňuje přistupovat ke COM objektům nebo k třídám z .NET Framework, tedy k programátorským rozhraním různých aplikací.
zobrazeno: 15 005x (15 000 CZ, 5 EN) | Komentáře [1]

Microsoft Word

Musíme mít nainstalovánu aplikaci MS Word. Potom můžeme použít ProgID od COM objektu Wordu a vytvořit objekt. Následně můžeme provádět řadu operací, jako otevírat dokumenty, upravovat obsah, nastavovat parametry (a to i některé pro Outlook). Vše se může dít skrytě nebo veřejně (v příkladu pomocí visible).

$MSWord = New-Object -ComObject Word.Application
$MSWord.Visible = $true
# můžeme otevřít existující soubor nebo vytvořit nový
# $MSWord.Documents.Open("d:\test.docx")
$WDoc = $MSWord.Documents.Add()
$WPar = $WDoc.Paragraphs.Add()
$WPar.Range.Text = "Test"
$WDoc.SaveAs([ref]"d:\test.docx")
$MSWord.Quit()

Microsoft Outlook

Některé nastavení Outlooku můžeme provést přes objekt Word.Application. V příkladu je nastavení podpisu pro nové správy (musí existovat podpis s tímto jménem).

$MSWord = New-Object -ComObject Word.Application
$MSWord.EmailOptions.EmailSignature.NewMessageSignature = "podpis"
$MSWord.Quit()

Pro některé funkce máme objekt Outlook.Application. Příklad přistoupí ke kalendáři a vrátí první záznam (standardně je vyžadováno potvrzení přístupu v aplikaci Outlook).

$outlook = New-Object -ComObject Outlook.Application
$mapi = $outlook.GetNamespace("MAPI")
$calendar = $mapi.GetDefaultFolder("olFolderCalendar")
$calendar.Items.GetFirst()

Internet Explorer

Stejným způsobem můžeme pracovat s Internet Explorerem.

$ie = New-Object -ComObject InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("www.samuraj-cz.com")
$ie.Quit()

Shell

Objekt Shell.Application nám zařídí přístup do systému (shellu). Uvedené příklady provedou - otevření Windows Explorer se zadanou složkou, otevření adresy v přiřazeném prohlížeči, minimalizuje všechna otevřená okna, zobrazí dialog pro vypnutí systému.

$shell = New-Object -ComObject Shell.Application
$shell.Explore("c:\")
$shell.Open("https://www.samuraj-cz.com")
$shell.MinimizeAll()
$shell.ShutdownWindows()

Active Directory

Pro pohodlný přístup k AD můžeme použít modul Active Directory Module for Windows PowerShell. To ale znamená, že na počítači, kde chcem spustit skript, musí být nainstalovaný. V některých případech to nemůžeme zajistit, ale pokud na stanicích máme .NET Framework, tak můžeme použít jeho možností. Ten obsahuje System.DirectoryServices Namespace, kde jsou třídy System.DirectoryServices.DirectorySearcher a System.DirectoryServices.DirectoryEntry, které slouží k přístupu k AD DS.

V příkladu vytvoříme instanci třídy System.DirectoryServices.DirectorySearcher, zadáme dotaz na vyhledání uživatele (aktuálně přihlášeného do systému, využijeme proměnnou prostředí) a zobrazíme jeho jméno a email. Použití cmdletu z Active Directory modulu je jednodušší, ale i tato metoda je funkční.

$Searcher = New-Object System.DirectoryServices.DirectorySearcher 
$Searcher.Filter = "(&(objectCategory=User)(samAccountName="+$Env:username+"))"
$ADUser = $Searcher.FindOne().GetDirectoryEntry()
$ADUser.DisplayName
$ADUser.mail

Druhý příklad ukazuje vypsání seznamu doménových kontrolerů. A možností je samozřejmě mnohem více.

$domain = [System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()
$domain.FindAllDomainControllers() | FT Name,SiteName,Roles -AutoSize

Související články:

PowerShell

Články týkající se Microsoft skriptovacího jazyku PowerShell, který se používá ve všech nových verzích MS OS a aplikací.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře
  1. [1] Jantar obecný

    Very good

    Pátek, 03.12.2021 08:37 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách