Powershell enregistrement à partir de invoke-command

J'ai un script qui inclut une fonction de journalisation.
La fonction écrit le journal pour $variable msg ensuite écrit le message à l'écran.
je peux rediriger cette sortie à un .txt fichier pour l'enregistrement.

J'ai besoin pour exécuter le script à plusieurs serveurs à l'aide de commande invoke-command
et d'écrire le journal de la sortie vers un fichier txt sur l'ordinateur qui exécute le script.

Je suis à essayer de comprendre comment la sortie à $msg dans l'écriture du journal fonction de la Possession et de le retourner afin que je puisse créer un maître de fichier journal pour tous les serveurs. Dois-je créer et remplir un objet personnalisé? Pas sûr de la façon de faire et d'obtenir les résultats de la session à distance.

Cela peut-il être fait?

Voici un exemple de code, je suis à l'aide et que le fichier journal de sortie devrait ressembler à:

$servers = 'Server1','Server2'
$logfile = 'c:\scripts\logs\Reg-DLL-log.txt'

foreach($server in $servers){
    invoke-command -cn $server -sb{
        Param($server)

        Function write-log{
            [cmdletbinding()]
            Param(
                [Parameter(ValueFromPipeline=$true,Mandatory=$true)] [ValidateNotNullOrEmpty()]
                [string] $Message,
                [Parameter()] [ValidateSet(“Error”, Warn”, Info”)]
                [string] $Level = Info”,
                [Parameter()] [ValidateRange(1,30)]
                [Int16] $Indent = 0
            )
            $msg = "{0} {1}{2}:{3}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $Level.ToUpper(), (" " * $Indent), $Message
                #This is output to screen
                switch ($Level) {
                    'Error' { Write-Host ('{0}{1}' -f (" " * $Indent), $Message) -ForegroundColor 'Red'}
                    'Warn' { Write-Host ('{0}{1}' -f (" " * $Indent), $Message) -ForegroundColor 'Yellow'}
                    'Info' { Write-Host ('{0}{1}' -f (" " * $Indent), $Message) -ForegroundColor 'white'}
        }}

        write-log -message 'Begin DLL registration for $server' -level Info
        $RegFile = "cimwin32.dll"
        regsvr32 $RegFile /s
        write-log -message 'registered $RegFile' -level Info
        write-log -message 'End DLL registration for $server' -level Info

    } -ArgumentList $server
}

La sortie du journal de Reg-DLL-log.txt devrait ressembler à ceci:

2013-06-19 11:25:12 INFO:Begin DLL registration for Server1
2013-06-19 11:25:12 INFO:registered cimwin32.dll
2013-06-19 11:25:12 INFO:End DLL registration for Server1
2013-06-19 11:25:12 INFO:Begin DLL registration for Server2
2013-06-19 11:25:12 INFO:registered cimwin32.dll
2013-06-19 11:25:12 INFO:End DLL registration for Server2

OriginalL'auteur GreetRufus | 2013-06-19