Peut être Start-Transcript
- que ça marcherait pour vous. Arrêtez-le d'abord s'il est déjà en cours d'exécution, puis démarrez-le et arrêtez-le lorsque vous avez terminé.
$ ErrorActionPreference = "SilentlyContinue"
Stop-Transcript | out-null
$ ErrorActionPreference = "Continuer"
Start-Transcript -path C: \ output.txt -append
# Faites des trucs
Stop-Transcript
Vous pouvez également l'exécuter tout en travaillant sur des choses et le faire enregistrer vos sessions de ligne de commande pour référence ultérieure.
Si vous souhaitez supprimer complètement l'erreur lorsque vous tentez d'arrêter une transcription qui n'est pas en cours de transcription, vous pouvez procéder comme suit:
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
Microsoft a annoncé sur le site Web de Powershell Connections (15/02/2012 à 16h40) que dans la version 3.0, ils ont étendu la redirection comme solution à ce problème.
Consultez l'article d'aide "about_Redirection" pour plus de détails et des exemples.
la source
Utilisation:
la source
Je suppose que vous pouvez modifier
MyScript.ps1
. Ensuite, essayez de le changer comme suit:Je viens d'essayer cela avec PowerShell 3. Vous pouvez utiliser toutes les options de redirection comme dans la réponse de Nathan Hartley .
la source
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
mais Powershell est vraiment moche si vous avez besoin de contrôler précisément la sortie.Une solution possible, si votre situation le permet:
Créez un nouveau MyScript.ps1 qui ressemble à:
. \ TheRealMyScript.ps1> output.txt
la source
la source
Vous voudrez peut-être jeter un œil à la cmdlet Tee-Object . Vous pouvez diriger la sortie vers Tee et elle écrira dans le pipeline et également dans un fichier
la source
Si vous souhaitez une redirection directe de toutes les sorties vers un fichier, essayez d'utiliser
*>>
:Comme il s'agit d'une redirection directe vers un fichier, elle ne sera pas envoyée à la console (souvent utile). Si vous désirez la sortie de la console, combinez toutes les sorties avec
*&>1
, puis canalisez avecTee-Object
:Je crois que ces techniques sont prises en charge dans PowerShell 3.0 ou version ultérieure; Je teste sur PowerShell 5.0.
la source
Si vous souhaitez le faire à partir de la ligne de commande et non intégré au script lui-même, utilisez:
la source
Pour intégrer cela dans votre script, vous pouvez le faire comme ceci:
Cela devrait faire l'affaire.
la source