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")