Windows_PowerShell_iconzakładam, że wszyscy wiedzą czym jest WMI i CIM – to jest abecadło dla każdego inżyniera systemowego. a [IMHO] podstawowa różnica w implementacji to możliwość tworzenia sesji CIM. czego dla WMI zrobić się nie dało. daje to niesamowite możliwości w przypadq hurtowych zapytań. podam trywialny przykład, gdzie zysk z zastosowania sesji nie jest wielki, ale osoby z wyobraźnią powinny poczuć moc, drzemiącą w takim zastosowaniu.

założeniem przykładu jest sztywna notacja nazewnicza dla hostów: ta sama nazwa ‘HOST’, zakończona inkrementowaną liczbą. ale równie dobrze można użyć ‘cat lista.txt | %‘ . niemniej chciałem przy okazji przemycić jeszcze jedną sztuczkę – w jaki sposób dopełniać liczby z dopełnieniem zerami.

cel: odpytanie 2o hostów o podstawowe informacje o BIOS – np. numer seryjny – oraz volumeny.

dla WMI

1..20|%{gwmi -ComputerName HOST$($_.toString("00")) -Class win32_bios}
1..20|%{gwmi -ComputerName HOST$($_.toString("00")) -Class win32_volume}

teraz zmierzmy czas dla wykonania tej sekwencji [ja robiłem dla siedmiu hostów]:

(27.05)[12:47]C:\scriptz :))o- measure-command{ 1..7|%{gwmi -computerName HOST0$_ -Class win32_bios;gwmi -computername HOST0$_ -class win32_volume} }

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 1
Milliseconds      : 331
Ticks             : 13317747
TotalDays         : 1.54140590277778E-05
TotalHours        : 0.000369937416666667
TotalMinutes      : 0.022196245
TotalSeconds      : 1.3317747
TotalMilliseconds : 1331.7747

 

dla CIM

1..20|%{new-CimSession -ComputerName HOST$($_.toString("00"))}
gcim -CimSession (Get-CimSession) -ClassName win32_bios
gcim -CimSession (Get-CimSession) -ClassName win32_volume

wydaje się być bardziej skomplikowane. odrobinę jest – trzeba najpierw założyć sesje, a następnie wykonać zapytanie wskazując na nie. sprawdźmy ekonomiczność zapytania [również dla 7 hostów]:

(27.05)[12:57]C:\scriptz :))o- measure-command{ gcim -CimSession (Get-CimSession) -Class win32_bios;gcim -CimSession (Get-CimSession) -class win32_volume }


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 263
Ticks             : 2637087
TotalDays         : 3.05218402777778E-06
TotalHours        : 7.32524166666667E-05
TotalMinutes      : 0.004395145
TotalSeconds      : 0.2637087
TotalMilliseconds : 263.7087

1331 vs 263  ms czyli 5cio krotnie szybciej [SIC!]. oczywiście można się przyczepić, że nie wliczyłem czasu utworzenia samej sesji ale…

wnioski

przy pojedynczym zapytaniu lub do niewielkiej ilości hostów – nie ma znaczenia czego użyjemy, bo czy co się wykona w 4oms czy w 1ooms jest dla człowieka pomijalne. jednak możliwość tworzenia sesji zwraca się przy seryjnych odpytaniach oraz jeśli do odpytania jest wiele hostów.

warto zauważyć, że przy dłuższej pracy zapis się upraszcza – ponieważ zamiast na iteracjach czy listingach, pracujemy na liście sesji.

eN.

 

 

Spread the love

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.