Obviously no one that is using PowerShell is using WSMAN against a remote Linux system. Everything assumes WMI, simple enough.
Use WSMAN against Linux and you enter into a insane land of XML and properly formatting your XML.
Take for example the simple act to send an XML string that queries a time period.
In PowerShell you type Get-Date and you get a nice, human friendly value back: Wednesday, May 05, 2010 10:24:14 AM
Now, try to send that to a CIM provider of any type (in my case a CIM provider that sits behind a WSMAN interface) and you immediately get a value invalid error.
off to Bing-land.. searching, searching, searching – absolutely nothing. Wait, there are a couple useful things…
on MSDN the Scripting API Objects, the SWbemDateTime Object. The what? you say. Isn’t it obvious? (I didn’t think so).
Here is the kicker, the CIM_DateTime format. It expects this really strange format that looks like this: yyyymmddHHMMSS.mmmmmmsUUU
So how do I take this: Wednesday, May 05, 2010 10:24:14 AM and turn it into this: 20100505102415.000000-420
I have to play with objects in PowerShell, here is my script part:
$startTimeWindow = ((Get-Date) - $9Minutes)
$objScriptTime = New-Object -ComObject WbemScripting.SWbemDateTime
$startTime = $objScriptTime.Value
I first set my time window to begin 9 minutes before ‘now’. I then create a SWbemDateTime object from the Wbem.Scripting class. I then take the start of my time window and set this friendly formatted time to the object. Then I retrieve the value of the object and I have a CIM_DateTime to send off to my Linux system CIM interface (through WSMAN).