Skip to main content

New way to convert WMI time properties

I picked up new way to convert time that is retrieved from Get-WMIObject.  One of my past students, Zak Shupp from HP, sent me a function that we was working and it had a .NET object that I never seen before.  For those of you in a PowerShell V2 environment, you do not get to benefit from the Get-CIMInstance cmdlet.  Here is an example of the output of the same class with a focus on a DATETIME property:

PS C:\> Get-WmiObject Win32_Operatingsystem |

Select-Object -ExpandProperty InstallDate



PS C:\> Get-CIMInstance Win32_Operatingsystem |

Select-Object -ExpandProperty InstallDate


Wednesday, November 13, 2013 10:25:19 AM


The first command pulls a string of characters to represent the date and time of the operating system installation.  This is not exactly intuitive.  The last 3 digits are for the time zone.  Try explaining that one.  The second command pulls this data as a DATETIME object, which is what PowerShell cmdlets like.  To correct this with Get-WMIObject, a scriptmethod called ConvertToDateTime is provided by the Get-WMIObject cmdlet to all objects that it recovers for you.  Here is how it is used.

PS C:\> (Get-WMIObject Win32_Operatingsystem).ConvertToDateTime((Get-WmiObject Win32_Operatingsystem).InstallDate)




Wednesday, November 13, 2013 10:25:19 AM


Not cool.  Now, we will do it Zak’s way using the System.Management.ManagementTimeConverter object.

PS C:\> $OS = Get-WmiObject Win32_OperatingSystem

PS C:\> [System.Management.ManagementDateTimeconverter]::ToDateTime($OS.InstallDate)



Wednesday, November 13, 2013 10:25:19 AM


Much better! Ok, not as good as the CIM cmdlets, but Zak has simplified the process for those who need to use Get-WMIObject in their environments.  Remember, once all of your systems are at PowerShell V3 or better, start coding with Get-CIMInstance and begin to phase out Get-WMIObject.


Popular posts from this blog

How to run GPResult on a remote client with PowerShell

In the past, to run the GPResult command, you would need to either physically visit this client, have the user do it, or use and RDP connection.  In all cases, this will disrupt the user.  First, you need PowerShell remoting enabled on the target machine.  You can do this via Group Policy . Open PowerShell and type this command. Invoke-Command –ScriptBlock {GPResult /r} –ComputerName <ComputerName> Replace <ComputerName> with the name of the target.  Remember, the target needs to be online and accessible to you.

How to force a DNS zone to replicate

For many implementations of DNS in a Windows environment, DNS is configured as being Active Directory integrated.  In other words, the DNS zone information is actually stored as a partition in the active directory database.  When Active Directory replicates, the zone data transfers.  For standard DNS deployments, the data is stored in a file.  You have to configure zone transfers manually in the DNS console.   The question in class was how to initiate replication manually.  Once you have properly configured a Primary and secondary DNS server and configured the Primary server to allow zone transfers, you can manually initiate a zone transfer.   Below you can see our test environment.  The image is of to RDP sessions to two different servers.  The DNS console on the left is the primary.  You can see and entry for Test2 that is not in the secondary database.  The servers are named NYC-DC2 (Primary DNS) and NYC-DC1 (Secondary DNS).  The DNS zone is named . On the se

Disable SMB signing

It never fails.  Once ever couple of months I have a delegate in my class that has to keep a Windows NT4 box running.  There is nothing wrong with that.  Many applications build on Windows NT4 are solid.  Why upgrade and incur cost when no upgrade is really required?  That is generally the reason why Windows NT4 is being used.  Another reason is the vender went out of business, but the application that is required is really good and paid for. Two things to take note of.  If these Windows NT4 clients are going to be authenticating on a Windows Sever 2008 DC, then you may have a problem.  For WinNT 4.0 SP2 and earlier, SMB signing was not supported.  For WinNT4.0 SP3 and earlier, secure channel was not supported. SMB signing helps to prevent Man-in-the-middle attacks.  To open GPMC, click Start , click Run , type gpmc.msc , and then click OK . In the console tree, right-click Default Domain Controllers Policy in Domains\ Current Domain Name \Group Policy objects\Default Domain Co