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

时间:2018-04-09 15:08:00

标签: windows powershell

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

1 个答案:

答案 0 :(得分:0)

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

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拉取所有对象。然后它只是做一个简单的foreach将所有内容放入$ diskReport。 $ lowservers只是为了清理它。

你可以用$ lowservers做任何你想做的事。我有一个计划任务,每周一和周五运行。然后发送一封电子邮件,如果它找到了一些低的东西。