如何使用Powershell从Active Directory上的计算机获取磁盘信息



我有PowerShell的基本知识,我有一个项目,需要我创建一个PowerShell脚本,该脚本获取活动目录中域中的所有计算机并收集每台计算机的可用空间/已用空间。

这是我用来获取磁盘空间不足的服务器的方法:

Import-Module ActiveDirectory
$Servers = Get-ADcomputer -Filter {OperatingSystem -like "*Server*"} -Properties Name, OperatingSystem -SearchBase "DC=yourDN,DC=local" | Select Name
$diskReport = Foreach($Server in $Servers)
{
    #$Status = "Offline"    
    $Name = $Server.Name
    #Make sure server is online
    if(Test-Connection -ComputerName $Name -ErrorAction SilentlyContinue)
    {
        #Get only 10%       
        Get-WMIObject win32_logicaldisk -ComputerName $Name -Filter "DriveType=3" -ErrorAction SilentlyContinue | Where-Object {   ($_.freespace/$_.size) -le '0.1'}        
    }
    else
    {
        #Server is offline
    }       
}
$lowservers = $diskreport | Select-Object @{Label = "Server Name";Expression = {$_.SystemName}},
        @{Label = "Drive Letter";Expression = {$_.DeviceID}},
        @{Label = "Total Capacity (GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
        @{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }},
        @{Label = 'Free Space (%)'; Expression = {"{0:P0}" -f ($_.freespace/$_.size)}} 

这将首先使用Get-ADComputer拉取所有对象。然后它只是做了一个简单的准备,把所有东西都放到$diskReport里。$lowservers只是清理一下。

你可以用$lowservers做任何你想做的事情。我有一个计划的任务,每周一和周五运行。然后,如果发现低电平,请发送电子邮件。

最新更新