Powershell脚本中的列而不是行

问题描述 投票:1回答:1

我正在尝试编写一个脚本,该脚本将使用带有主机名的文本文件,并且需要生成一个包含额外数据的文件。我只能在行而不是列中获取它:

Model: 
Bios Version: 
TPM OEM Ver: 
User logged In:

我也想从登录的用户那里获取电子邮件地址。我当时正在考虑使用get-aduser。我可以在当前代码之后使用带有用户名的列添加另一个foreach吗?我该怎么做?非常感谢所有帮助!

我的代码是:

$output = foreach ($hostname in Get-Content C:\temp\hostnames.txt)
{
$computerinfo = get-ciminstance -computername $hostname Win32_ComputerSystem
$computerBIOS = get-ciminstance -computername $hostname Win32_BIOS
$tpm = Get-ciminstance -class Win32_Tpm -namespace root\CIMV2\Security\MicrosoftTpm -ComputerName $hostname
"Hostname: " + $computerinfo.name
"Model: " + $computerinfo.Model 
"Bios Version: " + $computerBIOS.smbiosbiosversion
"TPM OEM Ver: " + $tpm.ManufacturerVersion
"User logged In: " + $computerinfo.UserName
} 
$output | out-file 'C:\Temp\hostnames3.txt' -append
powershell wmi
1个回答
0
投票

对于结构化数据,您应该使用CSV文件格式而不是纯文本格式。如果需要的话,这样可以更轻松地将它们用于后续步骤。

$output = 
foreach ($hostname in Get-Content C:\temp\hostnames.txt) {
    $computerinfo = Get-CimInstance -ComputerName $hostname -ClassName Win32_ComputerSystem
    $computerBIOS = Get-CimInstance -ComputerName $hostname -ClassName Win32_BIOS
    $tpm = Get-CimInstance -Namespace root\CIMV2\Security\MicrosoftTpm -ComputerName $hostname -ClassName Win32_Tpm
    [PSCustomObject]@{
        Hostname       = $computerinfo.name
        Model          = $computerinfo.Model
        Bios_Version   = $computerBIOS.smbiosbiosversion
        TPM_OEM_Ver    = $tpm.ManufacturerVersion
        User_logged_In = $computerinfo.UserName
    }
} 
$output | 
    Export-Csv -Path 'C:\Temp\hostnames3.csv' -NoTypeInformation

根据我的经验,CIM类UserNameWin32_ComputerSystem属性无法确定已登录的用户。我通常像这样使用旧的quser.exe

$UserQuery = ( C:\Windows\System32\quser.exe /server:$hostname 2> null)
        if ($UserQuery) {
            $UserQuery[1].Trim() -match "^(\S+)\s+.*((\d{2}\.){2}\d{4}\s+\d{2}:\d{2})" | Out-Null
            $LoggedOnUser = $Matches[1]
            $LogonTime = Get-Date -Date $Matches[2]
        }

然后,您可以根据需要使用$LoggedOnUser$LogonTime将其包括在输出对象中。

当然,您可以包括一个附加的AD查询,以获取有关登录用户的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.