如何使用PowerShell Get-Volume命令获取远程计算机磁盘详情
远程获取服务器磁盘数据的实现方案
前置要求
远程服务器需先启用WinRM服务,未配置的话可在远程服务器以管理员身份执行Enable-PSRemoting -Force完成初始化,且你使用的账号需具备远程服务器的管理权限。
方案1:通过CIM会话实现(推荐,适配WMI类查询,改动量小)
你原有逻辑基本不需要调整,仅需新增CIM会话并传入Get-Volume参数即可:
# 填写远程服务器名称/IP,多台查询可写数组 @("server01","server02") $remoteServer = "远程服务器地址" # 建立CIM会话,需要其他账号权限的话加参数 -Credential (Get-Credential) 手动输入账号 $cimSession = New-CimSession -ComputerName $remoteServer # 你原有的属性定义完全不变 $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)}} ) # Get-Volume指定CimSession参数即可拉取远程磁盘数据 $Diskmgmt = Get-Volume -CimSession $cimSession | 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' } # 使用结束后关闭会话 Remove-CimSession $cimSession
方案2:通过Invoke-Command远程执行脚本(适合复杂本地逻辑迁移)
直接把你原有本地脚本放到远程执行,不需要调整原有查询逻辑:
# 填写远程服务器名称/IP,多台查询可写数组 @("server01","server02") $remoteServer = "远程服务器地址" # 把原有查询逻辑放到脚本块中,远程执行后返回结果 $Diskmgmt = Invoke-Command -ComputerName $remoteServer -ScriptBlock { $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)}} ) return 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' }
内容的提问来源于stack exchange,提问作者Empty Coder
相关产品推荐
相关产品推荐

