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