在 PowerShell 中合并“Get-Disk”信息和“LogicalDisk”信息?

2023-11-24

我有这个扫描所有的查询逻辑磁盘信息 :

Write-Host "Drive information for $env:ComputerName"

Get-WmiObject -Class Win32_LogicalDisk |
    Where-Object {$_.DriveType -ne 5} |
    Sort-Object -Property Name | 
    Select-Object Name, VolumeName, VolumeSerialNumber,SerialNumber, FileSystem, Description, VolumeDirty, `
        @{"Label"="DiskSize(GB)";"Expression"={"{0:N}" -f ($_.Size/1GB) -as [float]}}, `
        @{"Label"="FreeSpace(GB)";"Expression"={"{0:N}" -f ($_.FreeSpace/1GB) -as [float]}}, `
        @{"Label"="%Free";"Expression"={"{0:N}" -f ($_.FreeSpace/$_.Size*100) -as [float]}} |
    Format-Table -AutoSize

输出是 :

enter image description here

然而 - 我在追寻物理磁盘信息及其分区/卷信息:

所以 - 对于物理磁盘我有这个命令:

Get-Disk

Result :

enter image description here

问题 :

我想结合这两个命令。我想看看磁盘,and每个磁盘下方 - 其逻辑磁盘信息:

  • 磁盘编号 1:....(信息)
    >其逻辑磁盘信息......
  • 磁盘编号 2:....(信息)
    >这是逻辑磁盘信息......
  • 磁盘编号 3:....(信息)
    >这是逻辑磁盘信息......
  • etc...

我如何组合这两个查询?


您需要查询多个 WMI 类才能获取所需的所有信息。

  • Win32_DiskDrive为您提供有关物理磁盘的信息。
  • Win32_DiskPartition为您提供有关物理磁盘上的分区的信息。
  • Win32_LogicalDisk为您提供有关分区内文件系统的信息。

可以使用以下命令将分区映射到其磁盘Win32_DiskDriveToDiskPartition类,并且驱动器可以通过以下方式映射到它们的分区Win32_LogicalDiskToPartition class.

Get-WmiObject Win32_DiskDrive | ForEach-Object {
  $disk = $_
  $partitions = "ASSOCIATORS OF " +
                "{Win32_DiskDrive.DeviceID='$($disk.DeviceID)'} " +
                "WHERE AssocClass = Win32_DiskDriveToDiskPartition"
  Get-WmiObject -Query $partitions | ForEach-Object {
    $partition = $_
    $drives = "ASSOCIATORS OF " +
              "{Win32_DiskPartition.DeviceID='$($partition.DeviceID)'} " +
              "WHERE AssocClass = Win32_LogicalDiskToPartition"
    Get-WmiObject -Query $drives | ForEach-Object {
      New-Object -Type PSCustomObject -Property @{
        Disk        = $disk.DeviceID
        DiskSize    = $disk.Size
        DiskModel   = $disk.Model
        Partition   = $partition.Name
        RawSize     = $partition.Size
        DriveLetter = $_.DeviceID
        VolumeName  = $_.VolumeName
        Size        = $_.Size
        FreeSpace   = $_.FreeSpace
      }
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PowerShell 中合并“Get-Disk”信息和“LogicalDisk”信息? 的相关文章

  • powershell cmdlet 的枚举参数

    我正在 powershell 上编写一个 cmdlet 脚本 我想使用 eum 作为参数之一 但我不知道在哪里放置枚举定义 以便它对于 cmdlet 参数声明可见 例如 我有这样的脚本参数定义 cmdletbinding param Par
  • EWS - 访问共享日历项目/约会

    我正在尝试获取共享日历的所有项目 我已关注EWS 访问所有共享日历 https stackoverflow com questions 23766747 ews access all shared calendars 23773834 23
  • 当存在另一个参数时在 PowerShell 中需要参数

    到目前为止我读到的所有内容都告诉我这应该有效 这是一个用于自动从 AD 帐户转出的脚本 我希望它的工作方式是 如果设置了 TransferHomeDrive 开关 那么它将需要旧服务器和新服务器的名称 我相信我应该能够通过参数集来做到这一点
  • 如何使用PowerShell批量调用Update-Database

    我们使用 Azure 弹性池生成多个客户端数据库和一个引用客户端数据库的主数据库 我们已经拥有多个数据库 并且正在开发新版本的代码 我们使用 EF6 代码优先 当我们更改模型 添加属性 时 我们创建迁移文件并需要调用Update Datab
  • 按名称前缀对文件进行分组,然后使用 PowerShell 归档 (zip) 每个组

    我有以下情况 我的目录中有大量文件 名称如下 dynamicname timestamp xml 我想按 对文件进行分组 然后将分组的文件压缩到以该组的 命名的存档中 在这种情况下 文件名和时间戳并不重要 只重要前六位数字 我是 Power
  • Docker 在 Powershell 中登录 gcr.io

    我正在尝试使用 Windows 10 登录 Google 容器注册表JSON 密钥文件 https cloud google com container registry docs advanced authentication using
  • 查询计算机列表 - 输出上次登录用户和上次登录日期

    我正在创建一个脚本来从 txt 文件中检索所有计算机名称 然后对它们进行查询 计算机名 用户名 最后登录计算机的用户名 上次登录 使用的日期 这就是我所拥有的 Clear Host machines Get Content Path C U
  • powershell函数开关参数与字符串数组

    我正在努力理解以下函数的输出 function testApp param string appName switch sw false string test string test2 Write Host appName sw test
  • 将组“Everyone”添加到目录及其所有子目录

    我目前使用的是 Vista 32 位 如何添加 Windows 安全组 Everyone 并完全控制目录及其所有子目录和所有文件 有我可以使用的 powershell 脚本吗 Thanks 我已经扩展了 martona 的代码片段 并且能够
  • 如何在 PowerShell 中获取当前活动/前台窗口

    我知道这可以通过使用 alt tab 轻松完成 但创建此脚本的主要目的是自学一些 PowerShell 基础知识 我正在编写一个脚本 运行时会在 powershell 和当前前台窗口之间切换前台窗口 我读这个问题 https stackov
  • 如何在 Windows 7 上安装 ScheduledTasks 模块

    是否可以安装该模块 http technet microsoft com en us library jj649816 aspx与 Windows 8 和 Windows Server 2012 不同的操作系统上的 PS v3 0 附带吗
  • get-childItem 的新 -file 参数是像 -filter 一样快还是像 -include 一样慢?

    EDIT希望在这里澄清我的复杂和误导性问题 基于我错误的假设 file 接受输入 感谢您纠正我并指出这只是一个开关参数 我的示例中的输入实际上传递给 path 听起来这可能是搜索多种文件类型最快的纯 powershell 方式 因为 fil
  • Powershell 没有一些内置帮助主题

    我发现我的 powershell 没有一些帮助主题 例如about profiles 我试过update help但这没有帮助 有谁可以帮忙看一下吗 PS C gt systeminfo Host Name OS Name Microsof
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 使用 Powershell 远程安装 .msi

    我已经让他使用这个论坛上存在的代码来跟踪代码 cls computername Get Content C Users C201578 db Documents server txt sourcefile iceopsnas LNT Sof
  • Python导致:IOError:[Errno 28]设备上没有剩余空间:'../results/32766.html'在磁盘上有大量空间

    我正在运行导致上述错误的 Python 脚本 不寻常的是这个脚本在另一台机器上运行并且没有任何问题 不同之处在于 在导致问题的机器上 我正在写入外部硬盘驱动器 更奇怪的是 这个脚本在有问题的机器上运行 并且已经写入了 30 000 多个文件
  • 带有 UiPath 的 Powershell

    我正在使用 UiPath 启动 PowerShell 脚本 我需要从 UiPath 传递一个参数 首先这可能吗 其次有人有这方面的例子吗 不确定 PowerShell 脚本中的语法是什么 是否可以将参数从 UiPath 传递到终端 您的 P
  • Powershell 脚本无法从 SCCM 正常运行 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 使用 powershell 获取短路径

    我正在尝试在 powershell 中使用以下代码来获取短路径 对于某些文件夹它有效 对于某些人来说它不起作用 a New Object ComObject Scripting FileSystemObject f a GetFile C
  • 在 Powershell 中,按记录类型拆分大型文本文件的最有效方法是什么?

    我正在使用 Powershell 进行一些 ETL 工作 读取压缩文本文件并根据每行的前三个字符将它们拆分出来 如果我只是过滤输入文件 我可以将过滤后的流传输到 Out File 并完成它 但我需要将输出重定向到多个目的地 据我所知 这不能

随机推荐