Comment ajouter des horodateurs à des lignes individuelles de PowerShell & amp; sortie?
Comment, le cas échéant, est-il possible d'ajouter les horodatages pour chaque ligne de sortie généré par le &
PowerShell opérateur?
Exemple:
PS H:\> $result = & ping 192.168.1.1
PS H:\> echo $result
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time=104ms TTL=250
Reply from 192.168.1.1: bytes=32 time=106ms TTL=250
Reply from 192.168.1.1: bytes=32 time=102ms TTL=250
Reply from 192.168.1.1: bytes=32 time=102ms TTL=250
Ping statistics for 192.168.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 102ms, Maximum = 106ms, Average = 103ms
Résultat souhaité:
PS H:\> echo $result
2014-12-08T14:45:48.8898125+00:00:Pinging 192.168.1.1 with 32 bytes of data:
2014-12-08T14:45:48.8932661+00:00:Reply from 192.168.1.1: bytes=32 time=104ms TTL=250
2014-12-08T14:45:48.9233451+00:00:Reply from 192.168.1.1: bytes=32 time=106ms TTL=250
2014-12-08T14:45:48.9765438+00:00:Reply from 192.168.1.1: bytes=32 time=102ms TTL=250
2014-12-08T14:45:49.0233105+00:00:Reply from 192.168.1.1: bytes=32 time=102ms TTL=250
2014-12-08T14:45:49.0233201+00:00:
2014-12-08T14:45:49.0238753+00:00:Ping statistics for 192.168.1.1:
2014-12-08T14:45:49.0239210+00:00: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
2014-12-08T14:45:49.0233318+00:00:Approximate round trip times in milli-seconds:
2014-12-08T14:45:49.0237209+00:00: Minimum = 102ms, Maximum = 106ms, Average = 103ms
Je sais comment découper /joindre une PowerShell tableau, mais cela ne peut se produire APRÈS la &
opérateur complète. Je suis à la recherche de plus en temps réel-comme solution, où les horodateurs sont ajoutés à la sortie, tandis que le & opérateur est en cours d'exécution.
Par ailleurs, le timestamp est lui-même $($(Get-Date -Format o) + ":")
source d'informationauteur Piotr L
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un filtre:
Exemple de sortie de
$result
:Vous pouvez utiliser la cmdlet Start-Transcript en combinaison avec une invite personnalisée dans votre profil:
Cela fonctionne très bien sur mon Windows 7 poste de travail. Cependant, sur certains nouveaux Server 2012 R2 installations Start-Transcript semble être légèrement cassé. Cette mise à jour corrige une partie de celui-ci: https://support.microsoft.com/en-us/help/3014136/powershell-transcript-file-doesn-t-contain-the-correct-information-in-windows-server-2012-r2
... mais cela ne résout pas le problème avec le vocal personnalisé, toujours.
Par exemple, je vois cela sur la console:
Et c'est ce qui est écrit dans le journal:
Pour quelqu'un qui est à la recherche pour plus d'informations sur
filter
voici la documentation. Il est surprenant difficile à trouver car la recherche de n'importe quelle combinaison du mot "filtre" et "powershell" donnera un million d'exemplaires et pas de documentation. Aussihelp filter
en powershell propose pas évident de trouver de l'aide, soit.La réponse fournie par mjolinor est la meilleure façon de faire quelque chose comme cela, mais je voulais étendre sur elle.
Est un raccourci pour l'appel de cette
Ces deux créer nommé fonctions qui acceptent l'entrée dans le pipeline. Exécuter
help pipline
dans powershell pour en savoir plus. Le pipeline de fonctionner sur un seul objet à la fois, et que l'objet peut être cité de la variable automatique$_
. Ainsi, chaque fonction va se répéter sur chaque élément dans le pipeline qui a été transmis à l'aide de la|
caractère pipe.Il se comporte différemment d'un fonctionnement normal en ce qu'il travaille sur les objets qu'ils arrivent, au lieu de tout à la fois. Par exemple la course
Serait dump l'ensemble de la
$result
objet sur une seule ligne et le résultat dans une réponse qui ressemble à ceciÉtant donné que la fonction d'exploitation sur l'objet comme un tout que vous auriez à effectuer une itération sur chaque ligne. Changer pour cette
Vous donnerait le bien formaté
Ici est joliment écrit l'article sur les différences entre ces approches.