【问题标题】:How to get disk information from computers on Active Directory with Powershell如何使用 Powershell 从 Active Directory 上的计算机获取磁盘信息
【发布时间】:2018-04-09 15:08:00
【问题描述】:

我具有 PowerShell 的基本知识,并且我得到了一个项目,该项目需要我创建一个 PowerShell 脚本,该脚本将域中的所有计算机都放在活动目录中,并收集每台计算机的可用空间/已用空间。

【问题讨论】:

  • 你试过什么?有作品要展示吗?你到底卡在哪一部分? Stack Overflow 不是代码编写服务。如果您需要帮助学习如何编码或排除故障,那么这里就是您的最佳选择。如果您需要从头开始编写代码,那么您应该聘请开发人员。
  • 我建议您查看 Get-ADComputerGet-WMIObjectGet-CIMInstance cmdlet 以帮助您入门。
  • 作为入门指南,请查看Get-ADComputerGet-VolumeInvoke-Command cmdlet。另外值得一看的是Get-WmiObject -Class Win32_Volume

标签: windows powershell


【解决方案1】:

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

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 为所欲为。我有一个计划任务,每周一和周五运行。如果发现有问题,请发送电子邮件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多