我肯定忽略了一些显而易见的东西,这个任务不应该这么难!如果你能指出这一点而不笑得太多,我提前谢谢了。我正在编写一个系统调查脚本,通过 GPO 在启动时在我的域中的每台计算机上运行。每次运行时,它都应该将一行添加到共享驱动器上的 csv 文件中,其中包含它收集的所有信息。我只能让它以列的形式输出。
代码:
$loglocation = "C:\Temp"
$timestamp = Get-Date -UFormat "%Y-%m-%d %H:%M"
$ipaddress = Get-NetIPAddress | fl -Property ipaddress | Out-String -stream |
Select-String 10.15
# Add info to hashtable
$computerinfohastable = [ordered]@{
Timestamp = $timestamp
Hostname = hostname
OSName = (Get-WmiObject Win32_OperatingSystem).Caption
OSVer = (Get-WmiObject Win32_OperatingSystem).Version
IPAddress = ($ipaddress -replace "ipaddress : ").Trim()
}
# Convert to object
$computerinforows = $computerinfohastable.Keys | ForEach-Object {
[PSCustomObject]@{
Property = $_
Value = $computerinfohastable[$_]
}
}
# Output to csv
$computerinforows | Export-Csv -Path "$loglocation\testfile.csv" -
NoTypeInformation -Append
我得到的是:
Property Value
Timestamp 11/25/2024 14:23
Hostname #####
OSName Microsoft Windows 11 Enterprise
OSVer 10.0.26100
IPAddress nnn.nnn.nnn.nnn
我想要的是:
Timestamp Hostname OSName OSVer IPAddress
11/25/2024 14:23 ##### Microsoft Windows 11 Enterprise 10.0.26100 nnn.nnn.nnn.nnn
我上网尝试了几种转置方法,但都没有成功。非常感谢任何建议。