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
717 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 Question by:scriptz • 2 • 2 6 Comments LVL 2 Expert Comment 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 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

0

LVL 69

Expert Comment

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'

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

ID: 39868167
My bad.
Use Write-Output instead of Write-Host.
0

LVL 39

Expert Comment

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

## Featured Post

Question has a verified solution.

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

Are you one of those front-line IT Service Desk staff fielding calls, replying to emails, all-the-while working to resolve end-user technological nightmares? I am! That's why I have put together this brief overview of tools and techniques I use in o…
How to sign a powershell script so you can prevent tampering, and only allow users to run authorised Powershell scripts
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

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

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