Home > Back-end >  csv powershell cmd output
csv powershell cmd output

Time:12-15

I use this script for check on multiple machine if I have installed some apps and now the script return in txt file result. (format hostname\nYes/No). How can I change return result in csv file in 2 columns ; 1.Hostname ; 2. Result ?

actual result.txt

hostname
YES / NO

desired csv export

Hostname | Result
hostname | YES / NO / OFFLINE

script

$Computers = Get-Content -Path C:\Users\m\Desktop\ip.txt | Where-Object { $_ -match '\S' }

foreach($Computer in $Computers){
Write-Host $Computer

    $User = "ussr"
    $Password = "pssd"
    $Command = 'hostname && if exist "C:\LdApp.exe" (echo YES) else (echo NO)'

    $secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
    $Credentials = New-Object System.Management.Automation.PSCredential($User, $secpasswd)

Get-SSHTrustedHost | Remove-SSHTrustedHost

try{

$SessionID = New-SSHSession -ComputerName $Computer -Credential $Credentials -AcceptKey:$true

Invoke-SSHCommand -Index $sessionid.sessionid -Command $Command | Select -Expand Output | Add-Content -Path result.txt}

catch {Add-Content -Path result.txt -Value "$Computer conectare esuata!"}
}

Thank you,

CodePudding user response:

I have modified your code and not tested it. I will do some thing like this

$result = Get-Content -Path C:\Users\m\Desktop\ip.txt | ForEach-Object {
    $computer = $_
    try {
        Write-Host $Computer
        $User = "ussr"
        $Password = "pssd"
        $Command = 'if exist "C:\LdApp.exe" (echo YES) else (echo NO)'
        $secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
        $Credentials = New-Object System.Management.Automation.PSCredential($User, $secpasswd)
        Get-SSHTrustedHost | Remove-SSHTrustedHost
        $SessionID = New-SSHSession -ComputerName $Computer -Credential $Credentials -AcceptKey:$true
        $output = if ($SessionID) {
            (Invoke-SSHCommand -Index $sessionid.sessionid -Command $Command).Output
        }
        else {
            "Offline" 
        }
    }
    catch {
        { 
            Write-Host "$Computer conectare esuata!"
            $output = "conectare esuata!"
        }
    }
    [PsCustomObject]@{
        'Hostname' = $computer
        'Status'   = $output
    }
}
$result | Export-csv -Path "C:\Users\m\Desktop\result.csv" -NoTypeInformation
  • Related