www.SAMURAJ-cz.com 

25.04.2024 Marek Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

PowerShell - Windows

Neděle, 12.12.2010 18:00 | Samuraj - Petr Bouška |
PowerShel využijeme pro spoustu oblastí. Jednou z nich je samozřejmě operační systém. Zjišťování údajů, konfigurace apod. Pro spouštění příkazů nejčastěji používám PowerShell ISE, které je součástí Windows 7.

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
zobrazeno: 28712krát | Komentáře [0]

Autor:

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

Zatím tento záznam nikdo nekomentoval.

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