Get-TimeZone.ps1

<#
.Synopsis
   This script retreives the timezone of a local or remote computer via WMI.
.DESCRIPTION
   This script retreives the timezone of a local or remote computer via WMI.
.NOTES
    Created by: Jason Wasser
    Modified: 9/11/2015 03:27:30 PM
 
    Changelog:
     * Added credential support.
     * Simplified code as per suggestions from Jeffrey Hicks @JeffHicks
.EXAMPLE
   Get-TimeZone
   Shows the localhost timezone.
.EXAMPLE
   Get-TimeZone -ComputerName SERVER1
   Shows the timezone of SERVER1.
.EXAMPLE
   Get-TimeZone -ComputerName (Get-Content c:\temp\computerlist.txt)
   Shows the timezone of a list of computers.
.LINK
    https://gallery.technet.microsoft.com/scriptcenter/Get-TimeZone-PowerShell-4f1a34e6
#>

Function Get-TimeZone {
    [CmdletBinding()]
    [Alias()]
    Param
    (
        # Computer name
        [Alias('Name')]
        [Parameter(Mandatory=$false,
                    ValueFromPipeLine=$true,
                    ValueFromPipelineByPropertyName=$true,
                    Position=0)]
        [string[]]$ComputerName=$env:COMPUTERNAME,
        $Credential = [System.Management.Automation.PSCredential]::Empty
    )
    Begin
    {
    }
    Process
    {
        foreach ($Computer in $ComputerName) {
            try {
                $ServerInfo = Get-WmiObject -Class win32_timezone -ComputerName $Computer -ErrorAction Stop -Credential $Credential
                $cn = $ServerInfo.__SERVER
                $TimeZone = $ServerInfo.Caption
                }
            catch {
                $TimeZone = $_.Exception.Message 
                }
            finally {
                $propHash = @{
                    Computername = $Computer
                    TimeZone = $TimeZone
                }
                $objTimeZone = New-Object -type PSObject -Property $propHash
                $objTimeZone
                }
            }
    }
    End
    {
    }
}