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-t-il ce résultat?
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>
Comme PowerShell exécute les instructions une par une, je pense, il applique le formatage de sortie de la première instruction à toutes les instructions suivantes.
Comme Get-Date
renvoie un objet de type DateTime
, il est formaté en tant que liste, ce qui affecte votre sortie 'dir'.
Vous pouvez tester cette hypothèse en changeant le type de retour de Get-Date
en chaîne à l'aide de l'option 'format':
date -Format yyyy-MM-dd ; dir
(cela produira une sortie par défaut pour 'dir')
Ou en modifiant le format de sortie par défaut en le mettant en pipeline en Format-Table
:
date | Format-Table ; dir
Cela semble se produire uniquement lorsque vous utilisez la date. "presque tout le reste après cela", y compris les autres applets de commande PS (juste essayé quelques-unes).
'date' comme tapé semble appeler Windows de base (tout comme cmd.exe) pour récupérer cette chaîne de données, PowerShell tente 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 ...
dir;date
Directory: D:\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 9/1/2018 2:12 PM .vscode
d----- 7/3/2018 4:44 PM CheckURI
....
DisplayHint : DateTime
Date : 12/14/2018 12:00:00 AM
Day : 14
DayOfWeek : Friday
DayOfYear : 348
Hour : 14
Kind : Local
Millisecond : 516
Minute : 42
Month : 12
Second : 22
Ticks : 636803953425164049
TimeOfDay : 14:42:22.5164049
Year : 2018
DateTime : Friday, December 14, 2018 2:42:22 PM