Compartilhe que você está se especializando

Caso previra, nosso script mais atualizado está disponível em Get-Hardware of Computers in a OU.ps1. Abra o o PowerShell ISE, com uma conta que tenha permissão de leitura no Active Directory e permissão de administrador nos desktops. Coloque o seguinte código, alterando a parte em cinza pelo distinguished name da unidade organizacional que você deseja (caso não saiba Como obter o distinguished name, leia nosso Post sobre esse assunto):

#-----------------------------------------------------------------------------------
#$Lista = $null
$SEARCH_OU="OU=Nome_da_OU,DC=seu_dominio,DC=com,DC=br"
#-----------------------------------------------------------------------------------
$ErrorActionPreference= 'silentlycontinue'
$Sleep=10
$namespace = "root\CIMV2"
$DaysInactive = 90
$time = (Get-Date).Adddays(-($DaysInactive))
$KeysArray = @()
If (! $Lista) {
    $Lista = (Get-ADComputer -Filter {LastLogonTimeStamp -gt $time} -Searchbase $SEARCH_OU).Name
}
$Lista | ForEach-Object {
    $Name = "localhost"
    $Name = $_
    $IPAddress = $null
    $IPAddress = (Resolve-DnsName -type A $Name).IPAddress
    write-host "$Name ($IPAddress)" -NoNewline
    If ($IPAddress)
    {
        If (Test-Connection -ComputerName $Name -Count 1 -ErrorAction SilentlyContinue)
        {
            $ComputerSystem = gwmi Win32_ComputerSystem -ComputerName $IPAddress
            $ComputerModel = $null
            $ComputerModel = $ComputerSystem.Model
            $ComputerName = $null
            $ComputerName = $ComputerSystem.Name
            $ComputerManufacturer = $null
            $ComputerManufacturer = $ComputerSystem.Manufacturer
        
            $Processor = gwmi win32_processor -ComputerName $IPAddress | Select Name
            $ProcessorName = $Processor.Name
            $ProcessorName = $ProcessorName.Replace("Intel(R)","").Replace("Core(TM)","").Replace("CPU","").Replace(" ","").Replace("-"," ").Split("@")[0]
            #---
            $Bios =  gwmi win32_bios -ComputerName $IPAddress
            $Serialnumber = $Bios.serialnumber
            $BiosManufacturer = $Bios.version
            #---
            $User = $null
            $User = (query user /server:$Name | select -Skip 1).split(" ")[1]
            #---
            $Disks = gwmi Win32_diskdrive -ComputerName $IPAddress | select model
            $DiskModels = $Disks.model -join ";"
            #---
            $operatingsystem = gwmi win32_operatingsystem -ComputerName $IPAddress | select TotalVisibleMemorySize,FreePhysicalMemory,Version
            $operatingsystemVersion = $operatingsystem.Version
            $Memory = [math]::Round((($operatingsystem.TotalVisibleMemorySize) / 1024)/ 1024)
            If ($Memory -eq 0) {$Memory = $null}

            #---
            If ( ($ComputerSystem) -or ($Processor) -or ($Bios) -or ($Disks) -or ($operatingsystem) )
            {
                $KeyData = $null
                $KeyData = New-Object PSObject
                $KeyData | Add-Member -MemberType NoteProperty -Name "User" -Value "$User"
                $KeyData | Add-Member -MemberType NoteProperty -Name "Name" -Value "$Name"
                $KeyData | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value "$ComputerName"
                $KeyData | Add-Member -MemberType NoteProperty -Name "ComputerModel" -Value "$ComputerModel"
                $KeyData | Add-Member -MemberType NoteProperty -Name "BiosManufacturer" -Value "$BiosManufacturer"
                $KeyData | Add-Member -MemberType NoteProperty -Name "ProcessorName" -Value "$ProcessorName"
                $KeyData | Add-Member -MemberType NoteProperty -Name "Memory" -Value "$Memory"
                $KeyData | Add-Member -MemberType NoteProperty -Name "DiskModels" -Value "$DiskModels"
                $KeyData | Add-Member -MemberType NoteProperty -Name "operatingsystemVersion" -Value "$operatingsystemVersion"
                $KeyData | Add-Member -MemberType NoteProperty -Name "Serialnumber" -Value "$Serialnumber"
                $KeysArray += $KeyData
            }
            write-host " - OK" -ForegroundColor Green
            $KeyData
            write-host "------------------------------------------------------------------------"
            $Lista = $Lista | Where-Object { $_ -ne $Name }
        }
        Else
        {
            write-host " - Sem acesso" -ForegroundColor Red
            write-host "------------------------------------------------------------------------"
        }
    }
    Else
    {
        write-host " - Sem IP" -ForegroundColor Red
        write-host "------------------------------------------------------------------------"
    }
}
#$KeysArray | Export-Csv -NoTypeInformation -Encoding UTF8 -Delimiter ';' "C:\Temp\Inventory.csv"
$KeysArray | ft

Execute o código e obtenha a lista.

Fontes/Referências

NVLAN – Como obter o Distinguished Name (DN) no Active Directory
NVLAN – Criar uma variável com colunas no PowerShell

NVLAN – GitHub

https://community.spiceworks.com/t/powershell-script-to-get-machines-serial-number-with-computer-name/835442
https://learn.microsoft.com/en-us/archive/technet-wiki/52273.active-directory-how-to-find-inactive-computers-in

Mais Informações

Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.

Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria