Solved

I need this powershell script modified to export the machine name and what version of sep is on it into a csv or txt file

Posted on 2014-02-18
6
706 Views
Last Modified: 2014-02-19
Currently this script will run against the hostlist.csv and echo the sep versionresults at the end.  I am looking for a way to get the computer names and sep version exported to a csv or txt file.

$File = Import-Csv 'c:\temp\hostlist.csv' #NOTE: the first line of this file must say machinename

foreach ($line in $file)
 
{
 
$machinename = $line.machinename
 
#Continue the script even if an error happens
 
trap [Exception] {continue}
 
 
 
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$MachineName)
 
#Set the Reg Container
 
$key = "SOFTWARE\\Symantec\\Symantec Endpoint Protection\\SMC"
 
$regkey = "" #clears the value between loop runs
 
$regkey = $reg.opensubkey($key)
 
 
 
$SEPver = "" #clears the value between loop runs
 
#NOTE: the values between the " ' " symbols are the key you're looking for
 
$SEPver = $regKey.GetValue('ProductVersion')
 
$Results = $MachineName , $SEPver
 

Write-host $Results
 

}
0
Comment
Question by:scriptz
  • 2
  • 2
6 Comments
 
LVL 2

Expert Comment

by:c_kedar
ID: 39868117
Not sure if I have understood your question correctly.
Assuming that your current script is already able to find the sep version on remote server and you need help only in formatting the the output, you only need to change last line to

Write-Host "$MachineName , $SEPver"

This will produce output in csv format which you can save in a file using output redirection (>).
0
 
LVL 39

Accepted Solution

by:
footech earned 500 total points
ID: 39868152
Sorry, but the above suggestion wouldn't work.  You can't redirect Write-Host.
Using the foreach-Object cmdlet it's easy to pipe the results to Export-CSV, but when using the foreach statement it takes a bit more thought.  If you surround the foreach statement with array notation "@()", then you can pipe that to Export-CSV.  You could also manually construct a .CSV file line by line using Write-Output and cmdlets line Add-Content, but Export-CSV is a little simpler.
$File = Import-Csv 'c:\temp\hostlist.csv' #NOTE: the first line of this file must say machinename 

@(foreach ($line in $file)
{
    $machinename = $line.machinename
    #Continue the script even if an error happens
    trap [Exception] {continue}
 
    $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$MachineName)
    #Set the Reg Container
    $key = "SOFTWARE\\Symantec\\Symantec Endpoint Protection\\SMC"
    $regkey = "" #clears the value between loop runs
    $regkey = $reg.opensubkey($key)
 
    $SEPver = "" #clears the value between loop runs
    #NOTE: the values between the " ' " symbols are the key you're looking for
    $SEPver = $regKey.GetValue('ProductVersion')
 
    New-Object PsObject -Property @{
                                    Computer = $MachineName
                                    SEPVersion = $SEPver
                                    }
}) | Export-CSV results.csv -notype

Open in new window

0
 
LVL 68

Expert Comment

by:Qlemo
ID: 39868165
Certainly not. Write-Host writes to the console, no redirection here!
#NOTE: the first line of this file must say machinename 
Import-Csv 'c:\temp\hostlist.csv' | % {
  #Continue the script even if an error happens
  trap [Exception] {$SEPver = $regkey = ""; continue}

  $machinename = $_.machinename
  $reg    = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$MachineName)
  $regkey = $reg.opensubkey('SOFTWARE\Symantec\Symantec Endpoint Protection\SMC')
  Write-Output $MachineName , $regKey.GetValue('ProductVersion')
} | Export-Csv -NoTypeInformation 'C:\temp\ee\SEPversion.csv'

Open in new window

However, do you really want to have the input file to be in CSV format for a single column only? Just using a text file containing all machine names would be sufficient ...
0
 
LVL 2

Expert Comment

by:c_kedar
ID: 39868167
My bad.
Use Write-Output instead of Write-Host.
0
 
LVL 39

Expert Comment

by:footech
ID: 39870009
:)  Everything should be triple-spaced...
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Join & Write a Comment

Utilizing an array to gracefully append to a list of EmailAddresses
The article will show you how you can maintain a simple logfile of all Startup and Shutdown events on Windows servers and desktops with PowerShell. The script can be easily adapted into doing more like gracefully silencing/updating your monitoring s…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

706 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now