I have two script and i am trying to compile it to one. But while compiling these two i am not getting the expected output.
Remote network status verification
[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) {
$DefaultGateway = $Network.DefaultIPGateway
$DNSServers = $Network.DNSServerSearchOrder
$OutputObj = New-Object -Type PSObject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper()
$OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value $DefaultGateway
$OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value $DNSServers
$OutputObj
}
}
}
}
end {}
Output
get-Content .serverl.ist.txt | ForEach-Object {.getgw.ps1 -computername $_}
————————————————–
ComputerName Gateway DNSServers
———— ——- ———-
QAVMFTC {10.247.98.1} {10.247.97.10, 10.247.97.11}
DNAS01 {10.247.98.1} {10.247.97.10, 10.247.97.11}
DNAS01
DNAS01
DNAS01 {198.18.2.1} {198.18.2.25, 198.18.2.26}
DNAS01
DNAS01
————————– Output End———————————————-
Remote Desktop Status verification
param(
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string[]]$computername
)
$results = @()
foreach($name in $computername){
$result = "" | select Name,RDP
$result.name = $name
try{
$socket = New-Object Net.Sockets.TcpClient($name, 3389)
if($socket -eq $null){
$result.RDP = $false
}else{
$result.RDP = $true
$socket.close()
}
}
catch{
$result.RDP = $false
}
$results += $result
}
return $results
Output
get-Content .serverl.ist.txt | ForEach-Object {.RDP_Port_verify -computername $_}
Name RDP
—- —
QAVMFTC True
dnas01 True
——————————————————
Complied Script
Note: Complied Script does not show output as expected. It was suppose to show RDP and Network status together.But scirpt does not work the server which is having Multiple NIC cards.
[cmdletbinding()]
param (
[parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerName = $env:computername
)
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) {
$DefaultGateway = $Network.DefaultIPGateway
$DNSServers = $Network.DNSServerSearchOrder
}
}
##################################
$results = @()
foreach($Computer in $computername){
##
$result = ""
try{
$socket = New-Object Net.Sockets.TcpClient($name, 3389)
if($socket -eq $null){
$result = $false
}else{
$result = $true
$socket.close()
}
}
catch{
$result.RDP = $false
}
$results += $result
}
$OutputObj = New-Object -Type PSObject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper()
$OutputObj | Add-Member -MemberType NoteProperty -Name RDP -Value $results
$OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value $DefaultGateway
$OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value $DNSServers
$OutputObj
—————————Output bellow————————————–
get-Content .serverl.ist.txt | ForEach-Object {.test.ps1 -computername $_}
ComputerName RDP Gateway DNSServers
———— — ——- ———-
QAVMFTC {True} {10.247.98.1} {10.247.97.10, 10.247.97.11}
DNAS01 {True}