我试图从域计算机获取一些系统信息。我运行这个脚本但它永远不会结束。
该脚本将计算机名称生成为文本文件,但随后无法从每台计算机获取所需信息。
我确定脚本中缺少某些内容,但我对PS脚本不太熟悉。
非常感谢任何帮助。
# Get a list of all computer names and export to text file
Get-ADComputer -Filter * -Property * | Select -Expand Name | Out-File Z:\test.txt
#Get the computer name and find the below infromation for each individual computer
get-content -path z:\test.txt | % {
$computerSystem = get-wmiobject Win32_ComputerSystem
$computerOS = get-wmiobject Win32_OperatingSystem
$computerCPU = get-wmiobject Win32_Processor
$computerHDD = Get-WmiObject Win32_LogicalDisk -Filter drivetype=3 }
#Prepare the below information for a CSV file
$csvObject = New-Object PSObject -property @{
'PCName' = $computerSystem.Name
'Manufacturer' = $computerSystem.Manufacturer
'Model' = $computerSystem.Model
'RAM' = "{0:N2}" -f ($computerSystem.TotalPhysicalMemory/1GB)
'HDDSize' = "{0:N2}" -f ($computerHDD.Size/1GB)
'HDDFree' = "{0:P2}" -f ($computerHDD.FreeSpace/$computerHDD.Size)
'CPU' = $computerCPU.Name
'OS' = $computerOS.caption
'User' = $computerSystem.UserName
'BootTime' = $computerOS.ConvertToDateTime($computerOS.LastBootUpTime)
}
#Export the fields you want from above in the specified order
$csvObject | Select User, Model, PCName, OS, CPU, Ram | Export-Csv 'system-info.csv' -NoTypeInformation -Append
}
答案 0 :(得分:0)
你有一个断开的循环,它在}
行的$computerHDD
处关闭,它在不使用数据的情况下一遍又一遍地覆盖相同的变量,以及一组破坏的" Get- WmiObject可以"从不尝试联系任何远程计算机的呼叫。
有点浪费的设计抓住所有属性并丢弃它们,保存到文件并重新加载,计算10个属性然后保持6。
一个破坏的导出,它只试图导出一个对象,并且看起来像是在循环中(使用export -append),但是不在循环中,并且将是如果它是笨重的。
我无法理解为什么它永远不会结束,但这就是为什么它无法正常运作。
我的重写尝试将是:
Get-ADComputer -Filter * | ForEach {
$computerSystem = Get-WmiObject Win32_ComputerSystem -ComputerName $_.Name
$computerOS = Get-WmiObject Win32_OperatingSystem -ComputerName $_.Name
$computerCPU = Get-WmiObject Win32_Processor -ComputerName $_.Name
[PSCustomObject]@{
'PCName' = $computerSystem.Name
'Model' = $computerSystem.Model
'RAM' = "{0:N2}" -f ($computerSystem.TotalPhysicalMemory/1GB)
'CPU' = $computerCPU.Name
'OS' = $computerOS.caption
'User' = $computerSystem.UserName
}
} | Export-Csv 'system-info.csv' -NoTypeInformation
Get-WMIObject调用现在连接到远程计算机,循环只计算PSCustomObject,其中只包含您关注的属性,那些属于管道的属性,并且所有自定义对象的整个输出一次性导出为CSV最后。