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):

#———————————————————————————–
$QUAL_OU=”OU=Nome_da_OU,DC=seu_dominio,DC=com,DC=br
#———————————————————————————–
$ErrorActionPreference= ‘silentlycontinue’
$Sleep=10
$namespace = “root\CIMV2”
#Criando a variável em branco
$KeysArray = @()

Clear-host
Get-ADComputer -filter * -Searchbase $QUAL_OU | ForEach-Object {
$Name = “localhost”
$Name = $_.Name
write-host “PC: $Name” -NoNewline
If (Test-Connection -ComputerName $Name -Count 1 -ErrorAction SilentlyContinue)
{
$Processor = gwmi win32_processor -ComputerName $Name | Select Name,LoadPercentage
$ProcessorName = $Processor.Name
$ProcessorName = $ProcessorName.Split(” “)[2]
$ProcessorName = $ProcessorName.Replace(“Intel(R) Core(TM)”,””).Replace(“CPU”,””).Replace(” “,””).Split(“@”)[0]
$ProcessorLoadPercentage = $Processor.LoadPercentage

— DISCO(S) —
$Disks = gwmi Win32_diskdrive -ComputerName $Name | select model
$DiskModels = $Disks.model -join “;”
$Idle1=$DiskTime1=$T1=$Idle2=$DiskTime2=$T2=1
$Disk = Get-WmiObject -class Win32_PerfRawData_PerfDisk_LogicalDisk -filter “name= ‘C:'”
[Double]$Idle1 = $Disk.PercentIdleTime
[Double]$DiskTime1 = $Disk.PercentDiskTime
[Double]$T1 = $Disk.TimeStamp_Sys100NS
start-Sleep $Sleep
$Disk = Get-WmiObject -class Win32_PerfRawData_PerfDisk_LogicalDisk -filter “name= ‘C:’ “
[Double]$Idle2 = $Disk.PercentIdleTime
[Double]$DiskTime2 = $Disk.PercentDiskTime
[Double]$T2 = $Disk.TimeStamp_Sys100NS
$PercentIdleTime = [math]::Round((($Idle2 – $Idle1) / ($T2 – $T1)) * 100)
$PercentDiskTime = [math]::Round((($DiskTime2 – $DiskTime1) / ($T2 – $T1)) * 100)

— MEMORIA —
$memory = gwmi win32_operatingsystem -ComputerName $Name | select TotalVisibleMemorySize,FreePhysicalMemory
$TotalVisibleMemorySize = [math]::Round((($memory.TotalVisibleMemorySize) / 1024)/ 1024)
$PercentUsedMemory = [math]::Round((($memory.TotalVisibleMemorySize – $memory.FreePhysicalMemory) / ($memory.TotalVisibleMemorySize)) * 100)

Adicionando uma nova linha
$KeyData = $null
$KeyData = New-Object PSObject
$KeyData | Add-Member -MemberType NoteProperty -Name “Name” -Value “$Name”
$KeyData | Add-Member -MemberType NoteProperty -Name “ProcessorName” -Value “$ProcessorName”
$KeyData | Add-Member -MemberType NoteProperty -Name “ProcessorLoadPercentage” -Value “$ProcessorLoadPercentage”
$KeyData | Add-Member -MemberType NoteProperty -Name “DiskModels” -Value “$DiskModels”
$KeyData | Add-Member -MemberType NoteProperty -Name “PercentIdleTime” -Value “$PercentIdleTime”
$KeyData | Add-Member -MemberType NoteProperty -Name “PercentDiskTime” -Value “$PercentDiskTime”
$KeyData | Add-Member -MemberType NoteProperty -Name “TotalVisibleMemorySize” -Value “$TotalVisibleMemorySize”
$KeyData | Add-Member -MemberType NoteProperty -Name “PercentUsedMemory” -Value “$PercentUsedMemory”
$KeysArray += $KeyData
write-host ” – OK” -ForegroundColor Green
write-host “————————————————————————“
}
Else
{
write-host ” – Sem acesso” -ForegroundColor Red
write-host “————————————————————————“
}
}
$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

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

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

NVLAN - Consultoria