Afternoon all
I’m having a slight issue displaying on a datagridview. This is what happens
My scripts checks desktops and currently writes the output to a csv. the input is from a txt file with hostanmes.
I’m trying to do away with the csv file and output to a datagridview.
Currently I only get an output from 1 hostname but the script does check the rest.
Here’s the script
It’s messy as I still got the csv part in there till I get this working
function checkmulti { $computers = (Get-Content -Path C:\temp\computers.txt) $resultsarray =@() del c:\temp\info.csv -force -recurse $outputMulti.Text = write "Checking computers in txt file" sleep 3 foreach ($HostName In $computers){ $ping = (Test-Connection -ComputerName $HostName -Count 1 -quiet) $outputBoxping.text = $ping if (-not $ping) { continue } $outputboxappqry.text = write "Checking Security Software" (Get-WmiObject -computerName $HostName Win32_Service -Filter "Name='RemoteRegistry'").StartService() | Out-Null $osTC_type = (Get-WmiObject -ComputerName $HostName -Class Win32_ComputerSystem).SystemType -match '(x86)' $osTC = (Get-WmiObject -ComputerName $HostName -Class Win32_OperatingSystem).caption -match "7" $osXP_type = (Get-WmiObject -ComputerName $HostName -Class Win32_ComputerSystem).SystemType -match '(x86)' $osXP = (Get-WmiObject -ComputerName $HostName -Class Win32_OperatingSystem).caption -match "XP" $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$HostName) $RegKeySEP= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{A5DCF955-5D4A-471D-8CB3-DCFDF5C5DEE7}") $osVDI = (Get-WmiObject -ComputerName $HostName -Class Win32_ComputerSystem).name -match "VDI" $osXPVDI_type = (Get-WmiObject -ComputerName $HostName -Class Win32_ComputerSystem).SystemType -match '(x86)' $osXPVDI = (Get-WmiObject -ComputerName $HostName -Class Win32_OperatingSystem).caption -match "XP" $RegKeyVDA= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{7B41B963-60ED-4D6A-8031-42E69B13F482}") if ($osXPVDI -eq "True" -and $osXPVDI_type -eq "True"){$RegKeyVDA= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AB15CDB8-F490-4476-B106-631CBF13F6C1}")} if ($osTC_type -eq "True" -and $osTC -eq "True") {$RegKeyBuild= $Reg.OpenSubKey("SOFTWARE\StandardPlatform")} if ($osTC_type -eq "True" -and $osTC -eq "True"){$RegKeySEP= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0E251D4D-316C-4F8B-A4C5-2722000764BE}")} if ($osXP_type -eq "True" -and $osXP -eq "True") {$RegKeySEP= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0E251D4D-316C-4F8B-A4C5-2722000764BE}")} if ($osXP_type -eq "True" -and $osXP -eq "True") {$RegKeyBuild= $Reg.OpenSubKey("SOFTWARE\StandardPlatform")} $RegKeyDefs = $Reg.OpenSubKey("SOFTWARE\Symantec\Symantec Endpoint Protection\CurrentVersion\public-opstate") if ($osWIn7_type -eq "True" -and $osWin7 -eq "True") {$RegKeyBuild= $Reg.OpenSubKey("SOFTWARE\Wow6432Node\StandardPlatform")} $Baselines = Get-WmiObject -ComputerName $HostName -Namespace root\ccm\dcm -Class SMS_DesiredConfiguration | select DisplayName,LastComplianceStatus | where {$_.DisplayName -match “Windows*”} $Comp = $Baselines.Lastcompliancestatus -replace "1", "Yes" -replace "0", "No" -replace "2", "Submitted" -replace "3", "Detecting" -replace "4", "Detecting" -replace "5", "Not Evaluated" $RegKeyLum= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{19E071C7-1823-498D-8ECC-BEE07D809CCB}") if ($osXP_type -eq "True" -and $osXP -eq "True") {$RegKeyLum= $Reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5715DF37-C820-464A-9F01-32AD0470272B}")} $VersionLum = $RegKeyLum.GetValue("DisplayVersion") $computerSystem = get-wmiobject Win32_ComputerSystem -ComputerName $HostName $computerOS = get-wmiobject Win32_OperatingSystem -ComputerName $HostName $OS = $computerOS.caption -replace "Microsoft Windows 7 Enterprise", "Win 7" -replace "Microsoft Windows XP Professional", "XP" $obj = new-object psobject $obj | add-member noteproperty Name ($computerSystem.Name) $obj | add-member noteproperty OS ($OS) $obj | add-member noteproperty Comp ($Comp) $obj | add-member noteproperty SEP ($RegKeySEP.GetValue("DisplayVersion") -replace "12.1.5337.5000", "12") $obj | add-member noteproperty AV_On ($RegKeyDefs.GetValue("AVRunningStatus") -replace "1", "Yes" -replace "2", "No") $obj | add-member noteproperty Lum ($VersionLum) $obj | add-member noteproperty VDA ($RegKeyVDA.GetValue("DisplayVersion") -replace "5.6.300.9", "5.6" -replace "5.6.400.9", "5.6") $resultsarray += $obj foreach ($HostName in $computers){ $rows + @($resultsarray) $array.addrange($resultsarray) $dataGridView.DataSource = $array $dataGridView.AutoResizeColumns()} $resultsarray | Export-csv c:\temp\info.csv -notypeinformation $outputboxappqry.text = write "Done" } $outputMulti.Text = write "Finished doing checks" }
Here’s the datagridview
$dataGridView = New-Object System.Windows.Forms.DataGridView $dataGridView.Location = New-Object System.Drawing.Size(5,80) $dataGridView.Size=New-Object System.Drawing.Size(480,180) $dataGridView.DataBindings.DefaultDataSourceUpdateMode = 0 $dataGridView.RowHeadersVisible = $false $dataGridView.ColumnHeadersVisible = $true $BuildCheckMulti.Controls.Add($dataGridView)
Also I can’t seem to clear the grid view when I run the function again
Any help would be nice