sexta-feira, 27 de fevereiro de 2015

Script que exibe IP, mascara de rede, Gateway, DNS e MAC de computadores na rede

Olá pessoal!

Compartilhando com vocês um script em Powershell muito bacana, na época precisei capturar algumas configurações de várias servidores em localidades diferentes.

O script abaixo exibe IP, mascara de rede, Gateway, DNS e MAC de computadores na rede.

[cmdletbinding()]
param (
[parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
   [string[]]$ComputerName = $env:computername
)            

begin {}
process {
foreach ($Computer in $ComputerName) {
 if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {
  $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $Computer | ? {$_.IPEnabled}
  foreach ($Network in $Networks) {
   $IPAddress  = $Network.IpAddress[0]
   $SubnetMask  = $Network.IPSubnet[0]
   $DefaultGateway = $Network.DefaultIPGateway
   $DNSServers  = $Network.DNSServerSearchOrder
   $IsDHCPEnabled = $false
   If($network.DHCPEnabled) {
    $IsDHCPEnabled = $true
   }
   $MACAddress  = $Network.MACAddress
   $OutputObj  = New-Object -Type PSObject
   $OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper()
   $OutputObj | Add-Member -MemberType NoteProperty -Name IPAddress -Value $IPAddress
   $OutputObj | Add-Member -MemberType NoteProperty -Name SubnetMask -Value $SubnetMask
   $OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value $DefaultGateway
   $OutputObj | Add-Member -MemberType NoteProperty -Name IsDHCPEnabled -Value $IsDHCPEnabled
   $OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value $DNSServers
   $OutputObj | Add-Member -MemberType NoteProperty -Name MACAddress -Value $MACAddress
   $OutputObj
  }
 }
}
}            

end {}

Salve o conteúdo em um arquivo chamado: Get-IPDetails.PS1

# O comando abaixo exibe as informações referente ao computador COMPUTER01
.\Get-IPDetails.PS1 -ComputerName  COMPUTER01 | ft -AutoSize


# O comando abaixo salva as informações em um arquivo txt chamado Lista.txt
.\Get-IPDetails.PS1 -ComputerName  COMPUTER01 | ft -AutoSize > Lista.txt

# O parâmetro “ | ft -AutoSize” exibe a saída em linha, este parâmetro pode ser removido.




Abraços e bons estudos!


 

Script para exibir data e hora de computadores na rede

Olá!

Vamos a minha primeira postagem, tinha que começar de alguma forma...

Este script para Powershell é bastante útil para saber se os computadores ou servidores da rede estão com o horário correto.

Particularmente utilizei para trazer a relação de horário dos servidores quando ocorreu o fim do horário de verão, dessa forma caso algum esteja com o horário errado será fácil identificar e tomar a ação de alterar o horário diretamente nele. Abaixo o Script:

$computers =
'PC1',
'PC2',
'PC3',
'PC4',
'PC5'
$computers | ForEach-Object{
   $Computername = Get-WmiObject -Class Win32_computerSystem -ComputerName $_
   $os = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $_
   $cdt = @{Name='ConvertedDateTime';Expression={$_.ConvertToDateTime($os.LocalDateTime)}}
   $Computername | Select-Object -Property Name,$cdt
}

O resultado deve ficar assim:
Name    ConvertedDateTime
----         -----------------
PC1       2/21/2015 12:24:52 PM
PC2       2/21/2015 12:24:49 PM
PC3       2/21/2015 12:24:49 PM
PC4       2/21/2015 12:24:49 PM
PC5       2/21/2015 12:24:50 PM

Originalmente retirei esse script do site:
http://www.powershellmagazine.com/2012/04/20/parsing-remote-machine-local-date-and-time-with-wmi/

Entretanto fiz uma pequena alteração com relação a exibição do nome do computador, no script original é exibido a versão do sistema operacional, com a alteração que fiz agora é exibido o nome do computador no resultado da consulta.


Abraços e bons estudos!