Я понимаю, что точка с запятой - это разделитель команд в Powershell. echo "hello"; dir
дает этот вывод.
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>
Но почему date; dir
дает этот вывод?
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
Майкл Тетер
источник
источник
date
. Это не псевдоним, ни командлет или .exe-файл (та же проблема в PSv6 BTW)Ответы:
Я думаю, что PowerShell выполняет операторы один за другим, и ко всем последующим инструкциям применяется форматирование первого оператора.
As
Get-Date
возвращает объектDateTime
типа, он форматируется как список, влияя на ваш вывод 'dir'.Вы можете проверить это предположение, изменив тип возвращаемого значения
Get-Date
на строку, используя опцию 'format':(это выдаст вывод по умолчанию для 'dir')
Или изменив форматирование вывода по умолчанию, передав его по конвейеру
Format-Table
:источник
Кажется, это происходит только при использовании даты; «почти все остальное после», включая другие командлеты PS (только что попробовал несколько).
Кажется, что введенный «date» вызывает ядро Windows (точно так же, как cmd.exe), чтобы вернуть эту строку даты, PowerShell пытается что-то сделать с этой строкой, которая появляется.
Если вы перевернете это, «что-нибудь здесь», дата не демонстрирует эту странность. Это просто делает это ...
источник