Powershell 명령 구분 기호가; (세미콜론), 왜“날짜; dir”은 dir 출력에 추가 정보를 제공합니까?


11

세미콜론은 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>

흥미로운 질문입니다. 나는 나 자신을 모르고 있기 때문에 그것이 대답되기를 희망하며, powershell을 둘러싼 길을 알고 있습니다.
LPChip


1
BUG 는 후속 명령에 동일한 헤더를 삽입 하지 않기 위해 출력을 연기 / 지연 하는 PowerShell 기능 의 결과이며 꽤 오랫동안 존재하는 것 같습니다.
LotPings

@LotPings-흥미로운 점은 Get-ChildItem에 날짜> 날짜를 출력하는 옵션이없는 것입니다. Get-ChildItem 결과 :
Michael Teter

동의한다. 나는 또한 무엇이 실행되는지 궁금하다 date. 별명이나 cmdlet 또는 .exe 파일이 아닙니다 (PSv6 BTW에서 동일한 문제)
LotPings

답변:


2

Powershell은 문장을 하나씩 실행하므로 첫 번째 문장의 출력 형식을 모든 후속 문장에 적용합니다.

으로 Get-Date의 반환 객체 DateTime유형, 그것은 당신의 '디렉토리'출력에 영향을 목록으로 포맷됩니다.

Get-Date'format'옵션을 사용하여 리턴 유형 을 문자열 로 변경하여이 가정을 테스트 할 수 있습니다 .

date -Format yyyy-MM-dd ; dir

(이것은 'dir'에 대한 기본 출력을 생성합니다)

또는 다음과 Format-Table같이 파이프 라이닝하여 기본 출력 형식을 변경합니다 .

 date | Format-Table ; dir

0

이것은 날짜를 사용할 때만 발생하는 것 같습니다. 다른 PS cmdlet을 포함한 '거의 다른 모든 것'(몇 가지 시도).

입력 한 'date'는 핵심 Windows (cmd.exe와 마찬가지로)를 호출하여 해당 날짜 문자열을 다시 가져 오는 것으로 보입니다. PowerShell은 해당 문자열로 무언가를 시도하고 있습니다.

이것을 반대로 바꾸면 '여기에 아무것도 없다'; 날짜가이 이상을 나타내지 않습니다. 그것은 단지 이것을합니다 ...

 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.