SCCM PowerShell 输出

SCCM PowerShell 输出

我编写了一个 PS 脚本来查找机器上次启动的时间(实际上是开机而不是刚刚启动,因为我们在 Win10 中启用了快速启动)。脚本似乎可以完成它的工作,它会返回启动日期/时间、上次用户和主机名。但是,我在 SCCM 中将其作为脚本运行,不确定大规模处理输出的最佳方法。

目前,脚本输出到哈希表,这样我就可以为最终读取结果的任何人分配每个值的键。但我想,如果您针对 50 台机器运行此程序,您将希望能够将结果放入电子表格或进行排序/过滤。但复制哈希表结果对于多台设备来说格式不好。

有人对如何最好地实现这一点有什么建议吗?值得注意的是,我远非 PowerShell 专家,下面的很多内容很可能是低效或多余的。另外,请忽略全名上的“(”分割。这与我们的用户帐户的格式有关。

提前致谢。脚本的当前形式如下。

$LastBoot = Get-CimInstance -Class win32_operatingsystem | select lastbootuptime
$LastBoot = $LastBoot | Select -ExpandProperty "lastbootuptime"
$LastBoot = $LastBoot.ToString()

$LastBootDate = $LastBoot.split(" ")[0]

$LastBootTime = $LastBoot.split(" ")[1]

$LocalMachine = Get-CimInstance -ClassName win32_operatingsystem | select csname
$LocalMachine = $LocalMachine | Select -ExpandProperty "csname"

$Username = Get-CimInstance -Class win32_networkloginprofile | Sort-Object -Property LastLogon -Descending | Select -ExpandProperty "name" -First 1
$Username = $Username.split("\")[1]

$Domain = $env:userdomain

$Friendly = Get-CimInstance -Class win32_networkloginprofile | Sort-Object -Property LastLogon -Descending | Select -ExpandProperty "FullName" -First 1
$Friendly = $Friendly.split("(")[0]

$Results = @{
    Hostname = $LocalMachine;
    BootDate = $LastBootDate;
    BootTime = $LastBootTime;
    Username = $Username;
    User = $Friendly 
}

Write-Output $Results | Format-Table

答案1

如果您想将结果导出到 CSV 文件,请使用以下命令:

$result.GetEnumerator() | Export-CSV "filepath.csv" -NoTypeInformation

或者如果你想把它放在 Excel 电子表格中:

$excel = new-Object -comobject Excel.Application
$excel.visible = $true # set it to $false if you don't need monitoring the actions...
$workBook = $excel.Workbooks.Add()
$sheet =  $workBook.Sheets.Item(1)
$sheet.Name = "Result"
$sheet.Range("A1","A2").ColumnWidth = 40
$sheet.range('A:A').VerticalAlignment = -4160 #align is center (TOP -4108 Bottom -4107 Normal)

$sheet.Cells.Item(1,1) = " "
$sheet.cells.Item(1,2) = " "

$index = 2

$result.keys | ForEach {  

    $sheet.Cells.Item($index,1) = $_
    $sheet.Cells.Item($index,2) = $result.item($_)
    $index++
}

$workBook.SaveAs("C:\mylist.xls")
$excel.Quit()

相关内容