Get-CimAssociatedInstance datetime hiba (2C)

+1 vote
asked Apr 8, 2013 in IRF tantárgy by kadarandras (28 points)  

Van két frissen telepített windows 8-as virtuális gépem, minden lekérdezés teljesen korrektul működik, de ha a feladatomhoz (2C) tartozó CIM_Product-hoz tartozó alfunkciókat szeretném megjeleníteni, akkor a következő hibát kapom:

Get-CimAssociatedInstance : The WS-Management service cannot process the request. The request contains an invalid datetime.
The string 19800000******.000000+*** does not represent any of these types: xs:dateTime, xs:date, or xs:time.
At line:1 char:1
+ Get-CimAssociatedInstance -InputObject $c -CimSession $s
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ProtocolError: (Win32_Product: ...= "1.3.21.135"):CimInstance) [Get-CimAssociatedInstanc
   e], CimException
    + FullyQualifiedErrorId : HRESULT 0x80338041,Microsoft.Management.Infrastructure.CimCmdlets.GetCimAssociatedInstan
   ceCommand
    + PSComputerName        : 192.168.121.131

Megjegyzésként még annyi, hogy a lekérdezés (Get-CimAssociatedInstance -InputObject $c -CimSession $s) mindkét gépen tökéletesen lefut, csak a távoli elérésnél dobja ezt a hibát.

Előre is köszi,
András

commented Apr 9, 2013 by micskeiz (2,565 points)  
ez valami egész érdekes hibának nézni, ha lesz egy kis időm, akkor nekiállok majd debugolni...
commented Apr 10, 2013 by micskeiz (2,565 points)  
edited Apr 10, 2013 by micskeiz
Ez aljas:) Nekem is sikerült reprodukálni a hibát. Megnéztem wsman alól is, és onnan meg lefut a kérés rendesen. Az ottani XML-ben látszik is, hogy mivel lesz a hiba, van egy ilyen rész:

          <p:LastUse>
             <cim:CIM_DateTime>19800000******.000000+***</cim:CIM_DateTime>
          </p:LastUse>

Ezt nem tudja konvertálni a visszajövő WS-Management XML-ből.

Azzal lehet segíteni, hogy a -KeyOnly segítségével csak a kulcsokat kéred le, és abban a LastUse nincs benne.

Még annyit akarok majd kipróbálni, hogy a Get-WSManInstance esetén előjön-e a hiba.

1 Answer

+1 vote
answered Apr 10, 2013 by micskeiz (2,565 points)  

Ez szerintem bug a Microsoft.Management.Infrastructure.CimCmdlets.GetCimAssociatedInstance megvalósításban.

Két workaroundot találtam:

  1. Csak a kulcsokat kérdezzük le, így a LastUse nem zavar be:

    Get-CimAssociatedInstance -InputObject $c -CimSession $s -KeyOnly

  2. A másik lehetőség, hogy a Get-WSManInstance cmdletet használjuk, ott nem jön ez elő. Az viszont elég ronda, mert ott a példányhoz tartozó EPR-t (Endpoint Reference) szöveges formában kell megadni:

    Get-WSManInstance -ComputerName $co -Credential $c -ResourceURI wmicimv2/* -Filter '{object=win32_product?Name=VMware Tools+Version=9.2.2.18018+IdentifyingNumber={0BA240D6-3AAD-4104-984D-1BF66EA8A689};ResultClassName=Win32_SoftwareFeature}' -Enumerate -Dialect Association

    Itt arra kell figyelni, hogy a több kulcsot a + karakterrel kell elválasztani (bár ezt a dokumentáció elfelejti említeni...). Ami miatt ez gond lesz, hogy pl. ha a 'MS Visual C++ Express' terméket akarjuk lekérdezni, akkor nyilván rossz helyen fog darabolni, és nem találtam meg, hogy lenni bármi escape szekvencia erre az esetre.

commented Apr 10, 2013 by kadarandras (28 points)  
Köszönöm a választ, amint lesz időm kipróbálom!
...