ファイルサーバのようなリモートホストの空き容量を調べる方法を検討しました。
以下の記事では Get-Volume
を使用する方法が紹介されていますが、WinRM が無効であったり Firewall が邪魔している場合には利用できません。
PowerShellを使ってシステムのディスクサイズや空き領域サイズなどをリモートから調査する:Tech TIPS - @IT
そこで、以前記事にしたローカルホストの空き容量を調べる方法を応用します。
リモートホストの空き容量を調べるためには以下のようにします。
cmd /c dir \\COMPUTERNAME\ROOT `
| select-object -last 1 `
| foreach-object { $_ -replace ',' -split '\s+' } `
| select-object -index 3
複数のドライブを調べる必要がある場合は関数にすると便利だと思います。
Function Get-Capacity {
Param(
[Parameter(ValueFromPipeline=$True)]
[string[]]$ComputerName = "localhost",
[string]$Root = "C$",
[Int64]$Threshold = 1GB,
[switch]$HumanReadable
)
process {
foreach($CN in $ComputerName) {
$size = cmd /c dir \\$CN\$Root `
| Select-Object -Last 1 `
| ForEach-Object { $_ -replace ',' -split '\s+' } `
| Select-Object -Index 3
if ($HumanReadable) {
$viewSize = "{0} GB" -f ([Math]::Round($size / 1024 /1024 /1024 , 1))
} else {
$viewSize = $size
}
if ($size -lt $Threshold) {
"{0} {1}`t{2}" -f "*", $CN, $viewSize
} else {
"{0} {1}`t{2}" -f "-", $CN, $viewSize
}
}
}
}