Solved

Powershell to Get operating system version from a list of servers. How to mark not found servers

Posted on 2014-11-03
5
4,020 Views
Last Modified: 2014-11-03
Hi,

From a list of server host names I am trying to get a list of the operating systems installed.I am using the following command in powershell;
 Get-Content "servers.txt" | Get-ADComputer -Properties Name, OperatingSystem
| Select Name, OperatingSystem > ServerOperatingSystems.txt

Open in new window

This works to an extent and populates the text file with servers it is able to locate. For the servers it's unable to locate or obtain the operating system I would like this to be marked with "Not found". At the moment, there is no mention of these servers in the output text file. Essentially something like this;

Server 1 Windows Server 2012
Server 2 Windows Server 2012
Server 3 "Not found"


Thanks in advance.
0
Comment
Question by:MattyS82
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 11

Accepted Solution

by:
Joe Klimis earned 500 total points
ID: 40419180
Hi

Try the following and let me know how you get on

Regards
Joe

foreach ($computer in get-content Servers.txt) 
{
        if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet))
        {
        $OS = (Get-WmiObject -Computer $computer -Class Win32_OperatingSystem ).caption
		Write-output "$computer - $os"
		}		
	
		Else { write-output "$computer  - not responding or found" }
}

Open in new window

0
 
LVL 11

Expert Comment

by:Joe Klimis
ID: 40419207
if you have many servers this could take a while

make sure you are using Powershell V3 or about , you can do it this way too,

workflow get-OsVersion 
{
 param( [string[]]$Computers )
  foreach -parallel ($computer in $computers) 
  {
    if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet))
        {
        $OS = (Get-WmiObject -Computer $computer -Class Win32_OperatingSystem ).caption
		"$computer $os"
		}		
		Else { "$computer  - not responding or found" }
  }
}
get-OsVersion -computers (get-content "Servers.txt")

Open in new window

0
 
LVL 1

Author Comment

by:MattyS82
ID: 40419232
perfect ! Thanks
0
 
LVL 1

Author Closing Comment

by:MattyS82
ID: 40419235
Great help thanks for that. Will keep this one handy for the future
0
 
LVL 40

Expert Comment

by:footech
ID: 40420464
You could avoid querying all the machines, and just use the information from AD.
Get-Content "servers.txt" | % `
{
  try {
    $name = $_
    Get-ADComputer $name -Properties Name, OperatingSystem -errorAction Stop | Select Name, OperatingSystem
  }
  catch {
    ""| Select @{n="Name";e={$name}},@{n="OperatingSystem";e={"Not Found"}}
  }
} | Out-File ServerOperatingSystems.txt

Open in new window

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A company’s centralized system that manages user data, security, and distributed resources is often a focus of criminal attention. Active Directory (AD) is no exception. In truth, it’s even more likely to be targeted due to the number of companies …
Group policies can be applied selectively to specific devices with the help of groups. Utilising this, it is possible to phase-in group policies, over a period of time, by randomly adding non-members user or computers at a set interval, to a group f…
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…

696 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question