1

I have a script that loops through a list of my servers, and runs various commands on them.

I am attempting to log the commands and their results for both the computer running the PowerShell script, and the remote computer running the commands.

Right now, I am trying to use the PSLogging module with the Start-Log cmdlet. I am able to log the commands run on the system running the Powershell script, but things run on the remote computer are not showing up.

My code looks like this.

Import-Module -Name "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSLogging\2.5.2\PSLogging.psm1"

$Date = Get-Date -Format "MM-dd-yyyy hh-mm tt"
$LogFileOutput = "Output Log"+" $Date"+".log"
$LogFilePlusPath = "\\files\Logs\"+"$LogFileOutput"

Start-Log -LogPath "\\files\Logs\" -LogName "LogFileOutput" -ScriptVersion "1.0"

Servers = @("Server1","Server2")

ForEach ($Server in $Servers) 
{
Write-Host "Running script on $Server"

    param([string]$Server)
    Invoke-Command -Computer $Server -ScriptBlock {
    Write-Host "Stopping IIS App Pool on $Server."  
    c:\windows\system32\inetsrv\appcmd.exe stop apppool "IISAppPool"
    
    Write-Host "Switching Service to manual on $Server and stopping it."
    Stop-Service Service -Force
    Set-Service Service-StartupType Manual
    }   -args $Server
}

Write-Host "Script complete at $(Get-Date -Format "hh:mm tt MM/dd/yyyy") Logs available at \\files\Logs"

Stop-Log 

The script works, and the services and App pools perform their operation as desired. The results just aren't being logged.

The only thing in the log would be:

Running script on Server1

Running script on Server2

Script complete at 12:20 PM 09/19/2020 Logs available at \files\Logs

Any suggestions on the best way to capture everything?

Thank you!

  • 2
    There is likely another method of doing it, but I typically `Invoke-Command -AsJob` and then on the local server you can `Get-Job | Receive-Job` and you'll see any returned output from those jobs. – Andrew Ryan Davis Sep 19 '20 at 23:26

0 Answers0