Nếu dấu phân cách lệnh Powershell là; (dấu chấm phẩy), tại sao ngày hẹn hò; dir dir làm cho đầu ra dir chi tiết thêm?


11

Tôi hiểu rằng dấu chấm phẩy là một dấu tách lệnh trong Powershell. echo "hello"; dircho đầu ra này.

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>

Nhưng tại sao lại date; dircho đầu ra này?

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>

Câu hỏi thú vị. Tôi hy vọng nó được trả lời, bởi vì tôi không có ý tưởng nào cho bản thân mình, và tôi biết cách của mình xung quanh powershell.
LPChip


1
Tôi nghĩ rằng BUG này là kết quả của tính năng PowerShells để hoãn đầu ra / trì hoãn để không chèn cùng một tiêu đề cho các lệnh liên tiếp và dường như tồn tại trong một thời gian khá dài.
LotPings

@LotPings - Điều thú vị là Get-ChildItem dường như không có bất kỳ tùy chọn nào sẽ tạo ra đầu ra> ngày đó; Kết quả Get-ChildItem.
Michael Teter 14/12/18

Đồng ý, tôi cũng tò mò không biết cái gì được thực hiện với datetất cả. Đây không phải là bí danh cũng không phải là cmdlet hoặc tệp .exe (vấn đề tương tự trong PSv6 BTW)
LotPings

Câu trả lời:


2

Vì powershell thực thi từng câu lệnh một, tôi nghĩ, nó áp dụng định dạng đầu ra của câu lệnh đầu tiên cho tất cả các câu lệnh tiếp theo.

Khi Get-Datetrả về một đối tượng DateTimekiểu, nó sẽ được định dạng dưới dạng danh sách, ảnh hưởng đến đầu ra 'dir' của bạn.

Bạn có thể kiểm tra giả định này bằng cách thay đổi loại trả về của Get-Datechuỗi bằng tùy chọn 'format':

date -Format yyyy-MM-dd ; dir

(điều này sẽ tạo đầu ra mặc định cho 'dir')

Hoặc bằng cách thay đổi định dạng đầu ra mặc định bằng cách đặt đường dẫn thành Format-Table:

 date | Format-Table ; dir

0

Điều này dường như chỉ xảy ra khi bạn sử dụng ngày; 'Hầu như mọi thứ khác sau' bao gồm các lệnh ghép ngắn PS khác (chỉ cần thử một vài).

'ngày' khi được nhập có vẻ như đang gọi lõi Windows (giống như cmd.exe) để lấy lại dữ liệu đó, PowerShell đang cố gắng làm gì đó với chuỗi đó xuất hiện.

Nếu bạn đảo ngược điều này, 'bất cứ điều gì ở đây'; ngày, không thể hiện sự kỳ quặc này. Nó chỉ làm điều này ...

 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.