Cvičebnica z PowerShellu, diel 2.

Služby

Vypíšte zoznam všetkých služieb vo Windowse.

Get-Service

alternatívne

gsv

Vypíšte zoznam všetkých bežiacich služieb.

gsv | where {$_.Status -eq "Running"}

Zastavte službu s názvom Themes.

Stop-Service Themes

alebo dlhšie, ale v súlade s filozofiou ps/kill:

Get-Service Themes | Stop-Service

Znovu spustite službu s názvom Themes.

Start-Service Themes

alebo dlhšie, ale v súlade s filozofiou ps/kill:

Get-Service Themes | Start-Service

Zistite, aké atribúty má objekt pre službu

Get-Service | Get-Member

alebo

gsv | gm

Vypíšte služby spolu so závislými službami.

Get-Service | ft Name, ServicesDependedOn –a

Vypíšte služby, ktoré nezávisia na žiadnej službe.

gsv | where {$_.ServicesDependedOn} | select name

Atribút ServicesDependedOn je zoznamom. Hoci podmienka vo Where očakáva booleovský výraz, v prípade zoznamov platí, že podmienka je splnená vtedy, ak je zoznam neprázdny.

Zistite, ktoré služby závisia na službe HTTP

gsv HTTP -DependentServices

Pre každú službu vypíšte služby, na ktorých táto služba závisí

gsv | select displayname, dependentservices | sort displayname

.NET Framework

Vypočítajte druhú odmocninu z 25

[Math]::Sqrt(25)

Použime statickú metódu Sqrt() na objekte System.Math.

Zahrajte štandardný zvuk Pípania vo Windowse

[Media.SystemSounds]::Beep.Play()

Stačí zavolať statickú inštančnú premennú Beep na triede System.Media.SystemSounds. (Namespace System je automaticky importnutý.)

Premenná Beep je typu System.Media.SystemSound (ľahko overíme pomocou cmdletu Get-Member):

[Media.SystemSounds]::Asterisk | Get-Member

Na SystemSound-e môžeme zavolať metódu Play()

WMI (Windows Management Instrumentation)

Zistite veľkosť RAMky v počítači

Get-WmiObject Win32_ComputerSystem

Z vlastnosti TotalPhysicalMemory vidíme výsledok. Ak chceme len konkrétne číslo:

(Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory

WMI objekt sa tvári ako štandardný powershellovský objekt: má inštančné premenné a metódy.

Voliteľne môžeme zistiť aj gigabajty:

(Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory / 1GB

Výsledok bude:

7,88347625732422

Zistite, koľko modulov RAM je v stroji

gwmi Win32_PhysicalMemory | ft -a BankLabel, Capacity

Výsledok:

BankLabel   Capacity
---------   --------
BANK 0    4294967296
BANK 2    4294967296

Máme teda 2 moduly po 4GB.

Zistite zoznam všetkých fyzických diskov pripojených k počítaču

Get-WmiObject Win32_DiskDrive

Win32_DiskDrive je trieda zodpovedajúca fyzickému disku vo Windowse.

Zistite zoznam všetkých vlastností / metód, ktoré možno zistiť o fyzických diskoch.

Get-WmiObject Win32_DiskDrive | Get-Member

Zistite zoznam fyzických diskov, ktoré podporujú technológiu SMART

Get-WmiObject Win32_DiskDrive | where {$_.Capabilities -contains 10} | ft Caption

Technológia SMART (Self-Monitoring, Analysis, and Reporting Technology) umožňuje monitorovanie a varovanie pred zlyhaním disku. Podporuje ju takmer každý dostupný pevný disk.

Trieda Win32_DiskDrive obsahuje vlastnosť Capabilities reprezentovanú poľom integerov. Ak pole obsahuje hodnotu 10, zariadenie podporuje SMART.

Nájdite fyzický disk s najväčšou kapacitou.

Get-WmiObject Win32_DiskDrive | sort size -desc | select -first 1

Dôležitá vlastnosť je Size.

Vypíšte zoznam všetkých logických jednotiek dostupných v systéme

gwmi Win32_LogicalDisk | where {$_.DriveType -eq 3}

Dokumentácia (http://msdn.microsoft.com/en-us/library/aa394173(VS.85).aspx) udáva 3 ako konštantu pre lokálnych jednotku.

Vypíšte zoznam všetkých MP3jek na všetkých lokálnych jednotkách

gwmi Win32_LogicalDisk 
| ? {$_.DriveType -eq 3} 
| % {dir $_.Caption -Recurse } 
| ? {$_ -like "*.mp3"} 
| ft name

Vypíšte zoznam všetkých tlačiarní pripojených k počítaču

Get-WmiObject Win32_Printer

Vypíšte názov implicitnej tlačiarne

Get-WmiObject Win32_Printer | where {$_.Default} | ft Name

Zistite zoznam všetkého nainštalovaného softvéru od Adobe

Get-WmiObject Win32_Product | where {$_.Caption -match "Adobe"} | sort Caption | ft Caption

Na niektorých inštaláciách Windows XP sa stretnete s chybou.

Zistite zoznam bežiacich procesov cez WMI

Get-WmiObject Win32_Process | ft -a ProcessId, Name, ExecutablePath

Alternatívne cez dopyty v jazyku WQL (WMI Query Language):

Get-WmiObject -Query 'select Name from Win32_Process'

WQL je podobný jazyku SQL. Názov triedy zodpovedá tabuľke, inštačné premenné stĺpcom.

Zistite zoznam bežiacich procesov z C:\Windows

Get-WmiObject -Query 'select Name from Win32_Process where ExecutablePath like "%C:\\Windows%"'

Alternatívne cez pretypovanie reťazca na objekt typu wmisearcher:

$q = [wmisearcher] 'select Name from Win32_Process where ExecutablePath like "%C:\\Windows%"'
$q.get()

Zistite info o procese s ID 0

gwmi -query 'select * from Win32_Process where Handle=0'

alebo

gwmi Win32_Process -filter "Handle=0"

alebo pretypovaním reťazca na objekt typu [wmi]:

[wmi] 'Win32_Process.Handle=0'

Pozor, táto posledná finta funguje len pre niektoré vlastnosti. Z dokumentácie pre konkrétnu triedu zistite, ktoré vlastnosti majú kvalifikátor (qualifier) Key. Napríklad Win32_Process má len vlastnosti CreationClassName a Handle. Podrobnejšie vysvetlenie je na MSDN Blogu.

Reštartujte počítač

(Get-WmiObject Win32_OperatingSystem).Reboot()

Get-WmiObject pošle do rúry jeden objekt, na ktorom môžeme volať metódy z dokumentácie.

Alternatívne cmdletom:

Restart-Computer

Providery

Zistite všetkých providerov v systéme

Get-PSDrive

Alebo:

gdr

Vypíšte zoznam všetkých diskových jednotiek

Get-PSDrive | Where {$_.Provider -match "FileSystem"} | Select Root

alebo

gdr | ? {$_.Provider -match "FileSystem"} | Select Root

Problém v tomto prípade spočíva v tom, že sú zahrnuté aj vymeniteľné jednotky (DVD mechaniky), v ktorých sa nemusí nachádzať disk a teda prípadný výpis ich obsahu zlyhá.

Vypíšte mená všetkých nainštalovaných fontov

(Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts").Property | sort

Využijeme providera pre registre. “Jednotka” HKLM: zodpovedá registru HKEY_LOCAL_MACHINE, nastaveniam súvisiacim s celým systémom.

Alternatívne s použitím.NET:

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$installedFonts = New-Object System.Drawing.Text.InstalledFontCollection
$installedFonts.Families | % {$_.Name}

Vypíšte zoznam všetkých vyhľadávacích strojov v Internet Exploreri a URL adries, ktorými sa vyhľadáva

dir "HKCU:\Software\Microsoft\Internet Explorer\SearchScopes" | % {$_.GetValue("DisplayName") + ": " + $_.GetValue("URL") }

Opäť využijeme providera pre registre. “Jednotka” HKCU: zodpovedá registru HKEY_CURRENT_USER, nastaveniam špecifickým pre konkrétneho používateľa.

Registre vracajú položku RegistryKey, čo je kvázi-mapa z kľúčov do hodnôt. Metódou GetValue() vieme získať hodnotu na základe daného kľúča.

Zistite, či je nastavená systémová premenná JAVA_HOME

dir Env:\JAVA_HOME | select value

Provider Env: slúži na premenné prostredia.

Alternatívne cez registre:

(gi "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment").GetValue("JAVA_HOME")

Nastavte JAVA_HOME pre všetkých používateľov na C:\java\jdk6.

(gi "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment").SetValue("JAVA_HOME", "C:\Java\JDK")

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *