WSMan lekérdezés platformfüggetlensége PowerShellből

+1 vote
asked Apr 9, 2015 in IRF tantárgy by trelkv (48 points)  
edited Apr 9, 2015 by micskeiz

Házi feladatomban (powershell) WS-Management segítségével kell lekérdeznem Win-ről és Linux-ról egyaránt.

Gyakorlati anyagban található 1-1 lekérdezés egyenként működik, de nem tudok egy közös lekérdezést megírni, ami platformfüggetlenül működne.
(Az említett lekérdezések:

Win -> Linux
Get-WSManInstance -ComputerName $ip -Authentication basic -Credential $c `
-ResourceURI cimv2/CIM_Process -Enumerate

Win -> Win
Get-WSManInstance cimv2/CIM_Process?__cimnamespace=root/cimv2 `
-ComputerName $ip -Credential $c -Enumerate

//vastagon szedett részek a különbözőek)

Kérdésem az lenne, hogy lehetséges-e egy egységes lekérdezés? Ha nem, akkor el tudom dönteni, hogy milyen OS van az adott gépen?

1 Answer

+2 votes
answered Apr 9, 2015 by micskeiz (2,873 points)  
selected Apr 9, 2015 by trelkv
 
Best answer

Egységesítés:

  • a ResourceURI-t kiírhatod a második lekérdezésben is
  • névteret elvileg hozzáfűzheted az első lekérdezéshez is, hisz Linuxon is a root/cimv2-ben van az adott osztály

Így marad az authentication. Ebben, amennyire én tudom, mindenképpen lesz valami platformfüggő dolog, de érdemes magát a lekérdezést nem duplikálni. Itt vagy stringkét fűzöd hozzá a parancshoz ezt a részt, és úgy hajtod végre (lásd Invoke-Expression). Vagy a Get-CimInstance cmdletet használva tudsz CimSession paramétert megadni, amiben pont a kapcsolódáshoz szükséges dolgokat lehet összeszedni, és akkor csak abban kell elágazni.

Az OS eldöntésére talán a legjobb mód egy identity kérés küldése (Test-WSMan), de ezt is duplikálni kell (sajnos az anonim identity kérést nem sikerült szabványosan megvalósítani, lásd itt a kommentekben a "hivatalos" álláspontot: http://blogs.technet.com/b/windowsserver/archive/2012/03/30/standards-based-management-in-windows-server-8.aspx)

...