[英]Creating a dynamic hashtable in Powershell
我想在Powershell中创建本地计算机的概述,并通过哈希表以JSON输出。 现在它可以有几个硬盘,并且必须在哈希表中动态创建。
我的代码:
$name = (Get-WmiObject -Class Win32_ComputerSystem -Property
Name).Name @{foreach ($Disk in $Disk) { $stats.Add("$platten", $Disk[0].VolumeName) }
stats = @{ $name= @{
CPUusage = $CPU
RAMusage = $ram
disknames = $disknames[1]
SSDsum = $ssdsum
HDDsum = $hddsum
Disksum = $disksum
}
$disk1 = @{
}
$disk2 = @{
}
$disk3 = @{
}
}}
现在,我询问硬盘驱动器并将其保存在哈希表中。 然后,foreach循环应遍历每个磁盘并将数据输入另一个哈希表。
这是错误,我尝试将其放入Hashtable中,但它不起作用。
如果创建哈希表,则通常大小固定
初始化变量$disknames
例如:
$disknames = New-Object System.Collections.ArrayList
然后您可以像尝试添加条目一样
您的问题很不清楚结束不完整。 但是,我认为这可能会对您有所帮助:
$ComuterSystem = Get-CimInstance -ClassName Win32_ComputerSystem
$Result = foreach ($Computer in $ComuterSystem) {
$LogicalDisk = Get-CimInstance -ClassName win32_logicaldisk -ComputerName $ComuterSystem.Name
# Create a new hashtable for each computer
$diskHash = @{}
# Foreach disk of that computer add it to the hashtable
foreach ($disk in ($LogicalDisk.Where({$_.DeviceID}))) {
$diskHash.Add($disk.DeviceID, $disk.Size)
}
[PSCustomObject]@{
Name = $Computer.Name
Model = $Computer.Model
Manufacturer = $Computer.Manufacturer
# Easiest is to simply store all data:
LogicalDisk = $LogicalDisk
# Or store the hashtable with your key value pair
Disks = $diskHash
# Or store a selection of what you need
Selection = $LogicalDisk | Select-Object DeviceID, VolumeName, Size, FreeSpace
}
}
$Result
$Result.Disks
$Result.LogicalDisk
$Result.Selection
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.