Články
PowerShell - Windows
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'))
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
Související články:
PowerShell
- PowerShell - Active Directory [14.11.2010 13:13]
- PowerShell - Exchange server [19.11.2010 08:45]
- PowerShell - Windows [12.12.2010 18:00] právě čtete
- PowerShell - Ovládání aplikací a další použití [09.01.2011 18:59]
- Exchange Web Services a PowerShell [13.01.2011 11:00]
- Active Directory Recycle Bin [31.03.2011 15:48]
- Automatizovaná kontrola prostředí pomocí PowerShellu [13.06.2011 17:35]
- Powershell - poslední přihlášení počítače či uživatele [06.09.2011 14:44]
- Exchange Server, Outlook a certifikáty v GALu [27.12.2011 14:48]
Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře
Zatím tento záznam nikdo nekomentoval.