Protože je stále málo času, tak v době zveřejnění tohoto článku neobsahuje příliš příkazů, ale časem budu doplňovat. Na různých místech mám poznámky, v kterých chci udělat pořádek. Určitě je tu i příležitost pro vás, podělit se o zajímavý příkaz v komentářích.
Obecné
Enumeration constants
Pro použití je více možností.
[Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatPDF [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatRTF")
Vypsání hodnot.
[Microsoft.Office.Interop.Word.WdSaveFormat] | Get-Member -Static -MemberType Property
Formátování výstupu
Hlavní dvě formátování jsou do tabulky Format-Table
alias FT
a pomocí seznamu Format-List
alias FL
. Výstup předáváme do formátovací funkce pomocí |
(pipe). Za funkci můžeme vypsat seznam sloupců, které chceme zobrazit. Také můžeme použít -AutoSize
pro přizpůsobení širky sloupců u tabulky.
Get-Process | FT ProcessName, CPU -AutoSize
Řazení výstupu
Pomocí Sort-Object
můžeme řadit výstup, který zobrazujeme. Pokud chceme zároveň formátovat výstup, tak musíme nejprve řadit.
Get-Process | Sort-Object -Descending CPU Get-Process | Sort-Object -Descending CPU | FT name,cpu -AutoSize
Zjištění typu proměnné
$x = 15 $x.GetType().FullName System.Int32
Zjištění metod a vlastností objektu
$objekt | Get-Member
Statistiky objektu, počet prvků
$objekt | Measure-Object ($objekt | Measure-Object).Count
Registry
Registry můžeme procházet stejně, jako souborový systém. Podstromy jsou mapovány na disky, HKEY_LOCAL_MACHINE
na HKLM:
a HKEY_CURRENT_USER
na HKCU:
.
PS C:\>cd HKCU: PS HKCU:\> dir
PS HKCU:\> cd Software PS HKCU:\Software> dir
Pro čtení hodnot se používá cmdlet Get-ItemProperty
(pro aktuální Get-ItemProperty .
), pro zápis Set-ItemProperty
, pro mazání Remove-ItemProperty
.
Systémové proměnné prostředí - Environment Variables
Výpis všech proměnných.
Get-ChildItem Env:
Výpis jedné hodnoty.
$Env:COMPUTERNAME
Vytvoření nové hodnoty.
$Env:test = "Pokus"
Záznamy do EventLogu
Seznam logů, které jsou v systému.
Get-EventLog -list
Vytvoření záznamu do logu. Jde vytvořit záznam pouze pro existující Source
a důležité je i EventId
.
Write-EventLog -LogName "Application" -Source "PerfOS" -EventId 2011 -EntryType Error -Message "Test"
Výpis nejnovějších 5 záznamů daného typu a ID z logu System.
Get-EventLog -LogName system -EntryType warning -InstanceId 129 -Newest 5
Otevření webové adresy (URL)
Otevření okna prohlížeče a v něm dané adresy.
(New-Object -com Shell.Application).Open("http://www.samuraj-cz.com") Start-Process -FilePath "http://www.samuraj-cz.com"
Pokud nechceme otevírat prohlížeč, ale chceme pouze zavolat URL, či zpracovávat obsah, můžeme použít následující kód, který vrátí obsah stránky (můžeme jej uložit do proměnné).
(new-object net.webclient).DownloadString("http://www.samuraj-cz.com")
Práce s časem
$time = Get-Date (Get-Date).AddHours(-1) (Get-Date).Day
Odeslání emailu
$smtp = new-object Net.Mail.SmtpClient("mail.domena.tld")
$smtp.Send(New-Object System.Net.Mail.MailMessage('prijemce@domena.tld','odesilatel@domena.tld','předmět','text'))
Nebo nativními prostředky
Send-MailMessage -From odesilatel@domena.tld -To prijemce@domena.tld -Subject "předmět" -SmtpServer server -Attachments soubor.txt -Encoding ([System.Text.Encoding]::Unicode) -Body "text"
Souborový systém
Práce se soubory a adresáři
Zjištění, jestli existuje daný adresář nebo soubor.
Test-Path C:\Scripts\test
Vytvoření adresáře.
New-Item C:\Scripts\test -type directory
Vytvoření souboru.
New-Item C:\Scripts\pokus.txt -type file
Vyhledání složek, kde je nastaveno oprávnění pro AD skupinu
Jednoduché hledání, které prochází zadanou cestu (včetně vnořených složek) a vypisuje ty složky, na které je nastavena zadaná AD skupina. V tomto případě, pokud existuje skupina, jejíž jméno začíná stejně, tak nalezne i tuto (nejde o přesnou shodu).
$StrGroup = "DL Skupina" $Folder = "C:\1" Get-ChildItem $Folder -Recurse | where { $_.Psiscontainer } | Get-Acl | where {$_.AccessToString -match $StrGroup} | select path
Operační systém
Zjištění verze OS
Pro řadu úkonů zatím nemáme nativní cmdlet, takže můžeme využít širokých možností WMI (pokud jej máme zapnuté).
Vrátí verzi OS, info o SP, architekturu (32 bit nebo 64 bit).
Get-WmiObject Win32_OperatingSystem -ComputerName pocitac | FL Caption,ServicePackMajorVersion,OSArchitecture
Pozn.: Místo příkazu Get-WmiObject můžeme použít jeho alias gwmi.
Windows služby
Seznam všech služeb a barevné odlišení běžících.
Get-Service | Sort-Object status,displayname | ForEach-Object { if($_.status -eq "running") { Write-Host $_.status `t $_.name `t $_.displayname -ForegroundColor "green" } elseif( $_.status -eq "stopped" ) { Write-Host $_.status `t $_.name `t $_.displayname -ForegroundColor "red" } else { Write-Host $_.status `t $_.name `t $_.displayname } }
Hardware
Zjištění informací o připojeném disku
V příkladu zjišťujeme výrobce, model, velikost a ID USB flash disku. To samé můžeme použít i pro pevné disky. Volání provádíme pomocí PowerShellu, ale ve skutečnosti se používá WMI (Windows Management Instrumentation). Je možno volat lokálně i na vzdálený počítač (pokud k němu máme práva).
gwmi Win32_DiskDrive | where-object {$_.InterfaceType -like "USB"} | fl Model,Size,PNPDeviceID gwmi Win32_DiskDrive -ComputerName pocitac | where-object {$_.InterfaceType -like "USB"} | fl Model,Size,PNPDeviceID
Komentáře
Zatím tento záznam nikdo nekomentoval.