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
Very good