My computers.csv file:
name
Server01.contoso.local
Server02.contoso.local
Server03.contoso.local
Server04.contoso.local
Server05.contoso.local
Server06.contoso.local
After initial run my script ,
I want to add new column inside my computers.csv file like below. Server01,Server03,Server06 are online and Server02,Server04,Server05 are offline.
name,appx
Server01.contoso.local,Port opened or computer reachable
Server02.contoso.local,Port closed or computer unreachable
Server03.contoso.local,Port opened or computer reachable
Server04.contoso.local,Port closed or computer unreachable
Server05.contoso.local,Port closed or computer unreachable
Server06.contoso.local,Port opened or computer reachable
After running my script for second time , Server02 is online. I will update it like below.
name,appx
Server01.contoso.local,Port opened or computer reachable
Server02.contoso.local,Port opened or computer reachable
Server03.contoso.local,Port opened or computer reachable
Server04.contoso.local,Port closed or computer unreachable
Server05.contoso.local,Port closed or computer unreachable
Server06.contoso.local,Port opened or computer reachable
it will continue like this.
Script :
$computers = Import-Csv "C:\temp\computers.csv"
$AllResults = foreach ($computer in $computers) {
try {
if (($computer.Appx -eq 'Port closed or computer unreachable') -Or ($null -eq $computer.Appx)){
Invoke-Command -ComputerName $computer.name -ScriptBlock { Get-AppxPackage -AllUsers } -ErrorAction 'Stop' | ForEach-Object {
[pscustomobject]@{
"ComputerName" = $computer.Name
"Appx" = $_.Name -join ";"
}
}
}
}
catch {
[pscustomobject]@{
"ComputerName" = $computer.Name
"Appx" = "Port closed or computer unreachable"
}
}
}
$AllResults | Export-Csv -Path "C:\Temp\MSStoreReport.csv" -NoTypeInformation -Encoding 'UTF8' -Append
UPDATED CODE:
$computers = Import-Csv "C:\temp\computers2.csv"
$AllResults = foreach ($computer in $computers) {
try {
if (($computer.appx -eq 'Port closed or computer unreachable') -Or ($null -eq $computer.appx)){
Invoke-Command -ComputerName $computer.name -ScriptBlock { Get-AppxPackage -AllUsers } -ErrorAction 'Stop' | ForEach-Object {
[pscustomobject]@{
"ComputerName" = $computer.Name
"Appx" = $_.Name -join ";"
}
}
$Computer.Appx = "Port open or computer reachable"
}
}
catch {
$Computer.Appx = "Port closed or computer unreachable"
}
}
$AllResults | Export-Csv -Path "C:\Temp\MSStoreReport.csv" -NoTypeInformation -Encoding 'UTF8' -Append
$computers | Export-Csv -Path "C:\temp\computers2.csv" -NoTypeInformation -Encoding 'UTF8'