Forum Discussion
charlie4872
May 03, 2022Copper Contributor
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
Sort By
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
- charlie4872Copper ContributorHello 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.
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 ?