繁体   English   中英

在Powershell中创建动态哈希表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM