首页 > 解决方案 > 用于远程计算机的 Powershell Get-Volumn

问题描述

下面是我为本地服务器执行以获取磁盘详细信息的代码

$props = @(
    'DriveLetter'
    'FileSystemLabel'
    'FileSystem'
    'DriveType'
    'HealthStatus'
    'OperationalStatus'
    @{n='SizeRemaining';e={"{0:N2}" -f ($_.SizeRemaining/ 1Gb)}}
    @{n='Size';e={"{0:N2}" -f ($_.Size / 1Gb)}}
    @{n='% Free';e={"{0:P}" -f ($_.SizeRemaining / $_.Size)}}
)

$Diskmgmt = Get-Volume | Select-Object $props 


foreach($dsk in $Diskmgmt)
{

    $dl = $dsk.DriveLetter
    $fsl = $dsk.FileSystemLabel
    $fs = $dsk.FileSystem
    $dt = $dsk.DriveType
    $hs = $dsk.HealthStatus
    $os = $dsk.OperationalStatus
    $sizer = $dsk.SizeRemaining
    $siz = $dsk.Size
    $PercentFree = $dsk.'% Free'
}

我需要连接到远程服务器并获取数据。

请让我知道如何为此命令连接远程计算机。

标签: powershell

解决方案


Get-Volume还有一个参数CimSession,您可以在其中给它一个计算机名或一组计算机名。(在远程会话或远程计算机上运行 cmdlet。输入计算机名称或会话对象

这使您可以将代码简化为:

$props = @{Name = 'ComputerName'; Expression = {$_.PSComputerName}},
         'DriveLetter','FileSystemLabel','FileSystem','DriveType','HealthStatus','OperationalStatus',
         @{Name = 'SizeRemaining_GB'; Expression = {"{0:N2}" -f ($_.SizeRemaining/ 1Gb)}},
         @{Name = 'Size_GB'; Expression = {"{0:N2}" -f ($_.Size / 1Gb)}},
         @{Name = '% Free'; Expression = {"{0:P}" -f ($_.SizeRemaining / $_.Size)}}

$Diskmgmt = Get-Volume -CimSession server01, server02 | Select-Object $props | Sort-Object ComputerName, DriveLetter

推荐阅读