Je comprends que le point-virgule est un séparateur de commandes dans Powershell. echo "hello"; dir
donne cette sortie.
PS C:\> echo "hello"; dir
hello
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2018-04-29 13:02 BCD_Backup
d----- 2018-12-02 14:08 Dell
<snip>
Mais pourquoi date; dir
donne cette sortie?
PS C:\> date; dir
Friday, December 14, 2018 11:14:23
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\BCD_Backup
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName : BCD_Backup
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : True
Name : BCD_Backup
FullName : C:\BCD_Backup
Parent :
Exists : True
Root : C:\
Extension :
CreationTime : 2018-04-29 13:02:31
CreationTimeUtc : 2018-04-29 11:02:31
LastAccessTime : 2018-04-29 13:02:31
LastAccessTimeUtc : 2018-04-29 11:02:31
LastWriteTime : 2018-04-29 13:02:31
LastWriteTimeUtc : 2018-04-29 11:02:31
Attributes : Directory
Mode : d-----
BaseName : BCD_Backup
Target : {}
LinkType :
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Dell
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\
<snip>
command-line
powershell
Michael Teter
la source
la source
date
. Ce n'est pas un alias ni une cmdlet ou un fichier .exe (même problème dans PSv6 BTW)Réponses:
Comme PowerShell exécute les instructions une par une, je pense, qu'il applique le formatage de sortie de la première instruction à toutes les instructions suivantes.
Comme
Get-Date
renvoie un objet deDateTime
type, il est formaté en liste, affectant votre sortie 'dir'.Vous pouvez tester cette hypothèse en changeant le type de retour de
Get-Date
en chaîne en utilisant l'option 'format':(cela produira une sortie par défaut pour 'dir')
Ou en modifiant le formatage de sortie par défaut en le redirigeant vers
Format-Table
:la source
Cela semble se produire uniquement lorsque vous utilisez la date; `` presque tout le reste après '', y compris d'autres applets de commande PS (j'en ai essayé quelques-unes).
'date' telle que tapée semble appeler le noyau de Windows (tout comme cmd.exe) pour récupérer cette chaîne de données, PowerShell essaie de faire quelque chose avec cette chaîne qui apparaît.
Si vous inversez cela, `` n'importe quoi ici ''; la date, ne présente pas cette bizarrerie. Il fait juste ça ...
la source