I’ve written the script below to check AD for win 2k3 servers then create a text file listing the servers. After that I would like to run a ping against them.
The problem I’ve had is initially I used “format-list” before outputting to text file. This adds a “Name : …” before the server name causing problems when trying to use the text in the next part. I changed from “format-list” to “form-table” and tried to remove the “name” title through formatting. This is messy but kind of worked.
When it comes to pinging the servers, they all reply “No ping response”, which I know is incorrect. I should add the ping part of the script I found else where and change some text.
Any help welcome, please bear in mind I’m a noob so go easy
# attempting to remove “name” field from text output.
$fmtname =@{label=" ";Expression={$_.name};}
Searching AD for WIN2k3 servers and outputting only server name to text.
if (test-Connection -ComputerName $Server -Quiet ) {
write-Host "$Server is alive and Pinging " -ForegroundColor Green
} else
{ Write-Warning "$Server No ping response"
}
If your goal is just to create a text file containing computer names, you don’t need to use the Format cmdlets at all; you can just use Select-Object -ExpandProperty and pipe the strings straight to Out-File:
On a side note, there’s no need to use backticks as a line continuation character after a pipe. Certain characters automatically allow line continuation in PowerShell, and the pipe is one of them. I’ve also moved your OperatingSystem filter into the Get-ADComputer command, for better performance:
Get-ADComputer -Filter 'OperatingSystem -eq "Windows Server 2003"' -SearchBase "OU=Non-Regulated,OU=Edinburgh-UK,OU=Servers,DC=CR,DC=LOCAL" |
Select-Object -ExpandProperty Name |
Out-File -FilePath c:\VCC-04_WIN2K3_SRV.txt
Edit: Strictly speaking, it’s possible for a computer’s hostname to be different from its “Name” (which is actually the CN portion of its distinguished name) in Active Directory. Usually they match, but keep that in mind if you have some weird results.
I’ve not bothered to start another thread as this is really a continuation of the above.
what I’d like to achieve:
Ping servers listed in a text file - say every 5 minutes.
If the ping response fails once add to a count, it fails on the next round send an email.
I have a script that I used to ping servers and I output the results to text. I also have a script I wrote for sending emails, however this script was triggered as a scheduled task. I’m trying to work out the best way to have the failure/error count trigger the email?
I’m not looking to have someone write a script for me, I’d like to learn and understand how it works, so just some suggestions or guidance would be welcome.