답변:
Powershell을 사용하면 다음 명령을 사용할 수 있습니다.
Get-WmiObject -Class win32_logicalDisk -ComputerName server1, server2, server3, etc | Select-Object pscomputername, deviceid, freespace, size
교체 등 서버 1, 서버 2를 원격 서버 이름 또는 IP를 함께.
결과는 다음과 같습니다.
원하는 경우 | Export-Csv -Path .\drives.csv
스크립트 끝에 추가 하여 Excel과 함께 사용할 수 있도록 CSV (쉼표로 구분 된 값) 파일로 파일을 출력 할 수 있습니다 . 그렇게하면 Excel을 열 때 Excel에서 드라이브 크기 열을 숫자로 형식화해야합니다.
킥킥 웃음을 위해 Active Directory의 모든 서버에서 작업을 수행하는이 PowerShell 스크립트를 작성했습니다.
$ErrorActionPreference= 'silentlycontinue'
Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' -Properties * | Select-Object Name |
ForEach-Object {
If (Test-Connection $_.Name -Count 1){
Get-WmiObject -Class win32_logicalDisk -ComputerName $_.Name |
Select-Object pscomputername, deviceid, freespace, size
}
else {
Write-host $_.Name " Connection Error"
}
}
다음 명령을 사용하십시오 fsutil
.
fsutil volume diskfree C:
fsutil volume diskfree \\server\share
출력은 다음과 같습니다
Total # of free bytes : 851127304192
Total # of bytes : 2147480485888
Total # of avail free bytes : 851127304192
사용 가능한 바이트가있는 줄만 얻으려면 다음을 사용할 수 있습니다.
fsutil volume diskfree C: | find /i "avail free"
도메인에 있다면 WMI ( WMI example )로 무언가를 할 수있을 것입니다 . 도메인에 있지 않은 경우 두 가지 방법으로 원격 모니터링을 수행 할 수 있습니다.
나는 또한 fsutil과 telnet의 아이디어를 사용하여 해결책을 찾았습니다.
<package>
<job id="vbs">
<script language="VBScript">
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "telnet 182.56.32.23 -l work"
WScript.Sleep 500
WshShell.AppActivate "Telnet"
WScript.Sleep 500
WshShell.SendKeys "y"
WshShell.SendKeys "~"
WScript.Sleep 500
WshShell.SendKeys "helloworld"
WScript.Sleep 500
WshShell.SendKeys "~"
WScript.Sleep 500
WshShell.SendKeys "C:\Users\work2\Desktop\diskcheck.bat"
WScript.Sleep 200
WshShell.SendKeys "~"
</script>
</job>
</package>
diskcheck.bat :
fsutil 볼륨 디스크없는 C : 산출: 총 여유 바이트 수 : 17084395520 총 바이트 수 : 249145847808 사용 가능한 총 바이트 수 : 17084395520
Function GetRemoteDiskSpace (
[String]$TargetComputer,
[String]$Drive
)
{
$Drive = New-PSDrive -Name K -PSProvider FileSystem -Root "\\$TargetComputer\$Drive$" -Persist
$Info = Get-PSDrive $Drive
$Free = $Info.Free /1GB
Remove-PSDrive -Name $drive -PSProvider FileSystem
return $Free
}