web-dev-qa-db-fra.com

start-Transcript ne capture pas toutes les sorties dans le fichier journal ..?

J'ai le code ci-dessous qui passe et obtient des informations sur les tâches planifiées et met la sortie qui se produit à l'écran dans un fichier journal.

Cependant, ce que j’ai remarqué, c’est que toutes les erreurs sont consignées SAUF pour les serveurs dont l’accès est "Accès refusé". Comment puis-je consigner ces erreurs également dans le fichier journal?.

Ci-dessous le code:

Start-Transcript -path $scheduledpath\logging.txt -append

foreach ($name in $names) 
{
    Write-Host "Running Against Server $name" -ForegroundColor Magenta
    if ( Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue ) 
        {
            #$Command = "schtasks.exe /query /S $name /fo CSV /v >c:\tools\Scheduled\$name.csv"
            $Command = "schtasks.exe /query /S $name /fo CSV /v >$scheduledpath\$name.csv"
            Invoke-Expression $Command
            Clear-Variable Command -ErrorAction SilentlyContinue
        }

    else{
            Write-Host "$name is Down" -ForegroundColor Red
        }

}

Stop-Transcript

Voici la sortie à l'écran:

> Running Against Server SV064909 
> SV064909 is Down 
> Running Against Server SV081372 
> SV081372 is Down 
> Running Against Server YBEF008690_vorher_SV064930 
> YBEF008690_vorher_SV064930 is Down 
> Running Against Server Alt_SV064921 
> Alt_SV064921 is Down 
> Running Against Server SV073632 
> ERROR: Access is denied. 
> Running Against Server SV073633 
> ERROR: Access is denied.

Voici la sortie dans le fichier LOG .... no ACCESS IS REFUS Afficher ...?

> Running Against Server SV064909 
> SV064909 is Down 
> Running Against Server SV081372 
> SV081372 is Down 
> Running Against Server YBEF008690_vorher_SV064930 
> YBEF008690_vorher_SV064930 is Down 
> Running Against Server Alt_SV064921 
> Alt_SV064921 is Down 
> Running Against Server SV073632 
> Running Against Server SV073633
18
lara400

Ce comportement lorsque la sortie de la commande native n'est pas enregistrée dans la sortie de Start-Transcript mais qu'elle est émise vers la console est signalé dans le bogue de connexion 315857 . Voir les solutions de contournement pour les solutions possibles.

14
dugas

La solution de contournement la plus simple consiste à diriger les résultats de la commande native vers Out-Host

schtasks.exe /query /S $name /fo CSV /v >$scheduledpath\$name.csv | Out-Host
11
Stanley De Boer

Aucun de ce qui précède n'a fonctionné pour moi. J'ai trouvé un lien de 2009 avec des discussions sur le sujet. Mais un Microsoft blog de 2010 a résolu le problème pour moi.

En bref, dirigez la sortie de la commande native vers Out-Default.

  schtasks.exe /query /S $name /fo CSV /v | Out-Default

{Je n'ai pas vraiment essayé cette ligne moi-même, mais vous voyez l'idée.}

3
Albert

Ahh, la bonne réponse devrait être:

$ Command = "schtasks.exe/requête/S $ nom/pour CSV/v 2> & 1> $ ordonnancée\$ nom.csv"

C'est à dire. pipe stderror (pipe 2) à stdout (pipe 1), de sorte que les deux apparaissent dans la stdout. 

1
Soeren L. Nielsen

Obtenir le numéro de service

    $servicetag = Get-WmiObject win32_bios | Select-Object -ExpandProperty SerialNumber 
    Write-output $servicetag

J'ai utilisé Write-output sur une ligne en haut de mon script, Après celle-ci, ils étaient tous en écriture-hôte. Mais chaque sortie "Write" apparaît maintenant dans mon script.

0
ALMO