CIM cmdletek futtatása távoli gépekre

Az igazán nagy előrelépést a WMI cmdletekhez képest a távoli futtatásnál találjuk. A WMI cmdletek a nem szabványos DCOM protokollt használják távoli elérés esetén. Ez egy nem túl friss protokoll, amit a Windows rendszereken kívül nem nagyon támogat senki. Az igazán nagy baj ezzel, hogy nagyon lassú, nehézkes a kapcsolat felépítése, és minden parancsnál ráadásul felépül, vegrehajtódik a parancs, majd bontásra kerül. Hiába adunk ki több parancsot ugyanarra a gépre vonatkozólag az egész koreográfia az elejétől megismétlődik.

A CIM cmdleteknél van lehetőség külön CIM kapcsolatok kezelésére, ha erre szükség van, például amikor nem csak egy CIM parancsot akarunk futtatni egy géppel kapcsolatban. De akár a hagyományos módon is kezelhetjük a távoli kapcsolatokat. Elsőként nézzük a hagyományos kapcsolatot, ilyenkor a -ComputerName paramétert használjuk:

PS C:\> Get-CimInstance -ComputerName DC2016 -ClassName Win32_computersystem

 

Name             PrimaryOwn Domain     TotalPhys Model     Manufactu PSCompute

                 erName                icalMemor           rer       rName

                                       y

----             ---------- ------     --------- -----     --------- ---------

DC2016           Windows... mydomai... 429449... Virtua... innote... DC2016

Ha pedig szeretnénk hosszantartó kapcsolatot kiépíteni, használhatjuk a New-CimSession  cmdletet:

PS C:\> $cimsess = New-CimSession -ComputerName dc2016

Majd a session objektum birtokában ezzel hívhatjuk meg a CIM cmdletet:

PS C:\> Get-CimInstance -CimSession $cimsess -ClassName Win32_computersystem

 

Name             PrimaryOwn Domain     TotalPhys Model     Manufactu PSCompute

                 erName                icalMemor           rer       rName

                                       y

----             ---------- ------     --------- -----     --------- ---------

DC2016           Windows... mydomai... 429449... Virtua... innote... dc2016

Ha nincs szükségünk a kapcsolatra, akkor a Remove-CimSession  cmdlettel bonthatjuk azt:

PS C:\> Remove-CimSession -CimSession $cimsess

Mindez nagyon hasonlatos a PowerShell távoli futtatásánál látottakhoz. Itt is igaz az, hogy a kapcsolatot akár egyszerre több gép irányába kiépíthetjük:

PS C:\> $cimsess = New-CimSession -ComputerName dc2016, Server1

PS C:\> $cimsess

 

 

Id           : 2

Name         : CimSession2

InstanceId   : 3f131da7-5840-4b68-90a7-669d3cc06f21

ComputerName : dc2016

Protocol     : WSMAN

 

Id           : 3

Name         : CimSession3

InstanceId   : 09d472b3-b0b6-44f0-8341-e6af13478ecd

ComputerName : Server1

Protocol     : WSMAN

Sőt! Ami még nagyon hiányzott, hogy szabályozhatjuk a időtúllépés értékét az -OperationTimeoutSec paraméterrel:

PS C:\> Get-CimInstance -CimSession $cimsess -ClassName Win32_ComputerSystem -O

perationTimeoutSec 1

 

Name             PrimaryOwn Domain     TotalPhys Model     Manufactu PSCompute

                 erName                icalMemor           rer       rName

                                       y

----             ---------- ------     --------- -----     --------- ---------

DC2016           Windows... mydomai... 429449... Virtua... innote... dc2016

SERVER1          Windows... mydomai... 429449... Virtua... innote... Server1

 



Word To HTML Converter