Powershell 在一次选择中两次之间的小时数?

Powershell 在一次选择中两次之间的小时数?,powershell,Powershell,我试图计算PID开始和当前时间之间的小时数,作为select的一部分,作为表达式。我正在尝试这样的东西,但结果却是空的。我盯着这个看了两个小时,哪儿也去不了 非常感谢你的帮助 $Now = Get-date $StartTime= @{n='StartTime';e={$_.ConvertToDateTime($_.CreationDate)}} $serverlist = invoke-sqlcmd -serverinstance sqlservername -database myrepo

我试图计算PID开始和当前时间之间的小时数,作为select的一部分,作为表达式。我正在尝试这样的东西,但结果却是空的。我盯着这个看了两个小时,哪儿也去不了

非常感谢你的帮助

$Now = Get-date
$StartTime= @{n='StartTime';e={$_.ConvertToDateTime($_.CreationDate)}}

$serverlist = invoke-sqlcmd -serverinstance sqlservername -database myrepodb `
-query "SELECT server FROM dbo.ServerList" 

$serverlist|%{
    $computer = $_.server

    gwmi win32_process -cn $_.server -filter "Name='notepad.exe' `
       AND CreationDate IS NOT NULL" | 
    select @{Name = 'Servername'; Expression = {"$computer"}},$StartTime, processid, `
    @{Name = 'HoursDiff'; Expression = {([datetime]$Now - [datetime]$_.CreationDate)}}
    } 

假设返回为空的是
HoursDiff
,问题似乎是WMI DMTF日期转换为PowerShell(.NET)日期时间。用对的调用替换
$\.ConvertToDateTime
[datetime]$\\.CreationDate
。例如:

[System.Management.ManagementDateTimeConverter]::ToDateTime($_.CreationDate)

您确定
$serverlist
中有计算机吗?gwmi调用在本地主机上对我有效。您是否尝试过通过
localhost
查看问题是在Win32_进程查询中还是在调用sqlcmd调用中?啊哈!好的,这让我明白了,所以我回来了(如果起床13小时15分钟,然后换衣服)13:15:22.8509847。使用它并以“.TotalHours”结束减法就可以了!非常感谢,先生!