我有PowerShell的基本知识,我得到了一个项目,需要我创建一个PowerShell脚本,它可以获取活动目录中域上的所有计算机,并收集每台计算机的可用空间/已用空间。
答案 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做任何你想做的事。我有一个计划任务,每周一和周五运行。然后发送一封电子邮件,如果它找到了一些低的东西。