Forum Discussion

charlie4872's avatar
charlie4872
Copper Contributor
May 03, 2022
Solved

Write-Host AND output results to text file.

Hello I have a script where I want to write results of "offline" hosts to the terminal and also write the results of the offline computers to a .txt file. The code I have below is what I have so far that writes the results of offline computers to the screen, but I have tried several ways to also write the name of the offline computers to a .txt file but nothing is working. Any help is greatly appreciated.

 

 

$computers = get-content .\computers.txt
foreach ($computer in $computers){
if (Test-Connection -computername $computer -count 1 quiet -erroraction silentlycontinue){
Invoke-Command -ComputerName (Get-Content -Path .\computers.txt) -ArgumentList (Get-Content -Path .\users.txt) -ScriptBlock { $args | Remove-LocalGroupMember -Group "Administrators" -ErrorAction:SilentlyContinue;}}
else {write-host "$computer Offline" -foregroundcolor red}
}

 

 

 

  • It does a ping/icmp test to the computers listed in the computers.txt file, if the firewall is active.. It won't return the request marking the computer inaccessible. You could try to use Test-Path "\\$($computer)\c$" instead of test-connection -computername.. (Run this as an account who has local admin priviledges on the remote machine, Domain Admin of Global Admin/Device Administator? Also, shouldn't invoke-command -computername (get-content -Path .\computers.txt) be invoke-command -computername $computer ?

8 Replies

  • charlie4872 Something like this:

     

    $computers = get-content .\computers.txt
    foreach ($computer in $computers){
    if (Test-Connection -computername $computer -count 1 quiet -erroraction silentlycontinue){
    Invoke-Command -ComputerName (Get-Content -Path .\computers.txt) -ArgumentList (Get-Content -Path .\users.txt) -ScriptBlock { $args | Remove-LocalGroupMember -Group "Administrators" -ErrorAction:SilentlyContinue;}}
    else {"$computer Offline" | Out-File -Path c:\temp\log.txt -Append}
    }

     

    The Write-Host removes the ability to output it to a text-file using out-file

    • charlie4872's avatar
      charlie4872
      Copper Contributor
      Hello Harm thanks for the response! The script runs but in the output file it is showing every computer as "Offline" even though some of them are actually online.
      • Harm_Veenstra's avatar
        Harm_Veenstra
        MVP

        It does a ping/icmp test to the computers listed in the computers.txt file, if the firewall is active.. It won't return the request marking the computer inaccessible. You could try to use Test-Path "\\$($computer)\c$" instead of test-connection -computername.. (Run this as an account who has local admin priviledges on the remote machine, Domain Admin of Global Admin/Device Administator? Also, shouldn't invoke-command -computername (get-content -Path .\computers.txt) be invoke-command -computername $computer ?

Resources