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
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.
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
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.}
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.
$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.