簡體   English   中英

PowerShell查詢的SCCM LastLogonTimestamp格式

[英]SCCM LastLogonTimestamp format queried by PowerShell

我想知道如何將SCCM數據庫中找到的LastLogonTimestamp轉換為可讀格式。 我現在的代碼如下:

$SCCMServer = 'SERVERSCCM'
$SCCMModule = 'C:\Program Files (x86)\Microsoft Configuration Manager\bin\ConfigurationManager.psd1'
$SamAccountName = 'test'

Function Get-SCCMSite { 
    Param (
        [Parameter(Mandatory=$true)]
        [String]$ComputerName
    )
    Process {
        Get-WmiObject -ComputerName $ComputerName -Namespace 'root\SMS' -Class 'SMS_ProviderLocation' | 
            ForEach-Object{ 
                if ($_.ProviderForLocalSite -eq $true) {$SiteCode=$_.sitecode} 
        } 
        if ($SiteCode -eq '') {
            throw ('Sitecode of ConfigMgr Site at ' + $ComputerName + ' could not be determined.') 
        }
        else { 
            Return $SiteCode 
        } 
    }
}

Import-Module $SCCMModule
$SCCMSite = Get-SCCMSite -ComputerName $SCCMServer
Set-Location "$SCCMSite`:"
$SCCMNameSpace="root\SMS\site_$SCCMSite"

Get-WmiObject -namespace $SCCMNameSpace -computer $SCCMServer -query "select * from sms_r_system where LastLogonUserName='$SamAccountName'" | select *

LastLogonTimestamp的輸出如下所示:

LastLogonTimestamp            : 20150330132039.000000+***

在網絡上,我發現這種格式可以轉換為可讀格式,如下所示:

[datetime]::FromFileTime(20150330132039.000000+***).ToString('d MMMM yyyy')

但它並沒有真正起作用,因為它輸出錯誤。 當我刪除后面的最后一部分. 它給我一個1601年的日期,這絕對不正確。

我不認為FromFileTime方法對於這種情況是正確的。

您可以使用ParseExact方法對原始值進行一些操作:

> $lastlogonstamp = "20150330132039.000000+***"
> $dt = [datetime]::parseexact($lastlogonstamp.split('.')[0],"yyyyMMddHHmmss",[System.Globalization.CultureInfo]::InvariantCulture)
> $dt

30 March 2015 13:20:39

> $dt.ToString('d MMMM yyyy')
30 March 2015

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM