Saya mengerti bahwa titik koma adalah pemisah perintah di Powershell. echo "hello"; dir
memberikan hasil ini.
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>
Tetapi mengapa date; dir
memberikan hasil ini?
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
sumber
sumber
date
sama sekali. Ini bukan alias atau file cmdlet atau .exe (masalah yang sama di PSv6 BTW)Jawaban:
Ketika powershell mengeksekusi pernyataan satu per satu, saya pikir, itu menerapkan format output dari pernyataan pertama untuk semua pernyataan berikutnya.
Saat
Get-Date
mengembalikan objekDateTime
bertipe, objek itu diformat sebagai daftar, memengaruhi keluaran 'dir' Anda.Anda dapat menguji asumsi ini dengan mengubah tipe kembali
Get-Date
ke string menggunakan opsi 'format':(ini akan menghasilkan output default untuk 'dir')
Atau dengan mengubah format output default dengan mem-pipel-kannya ke
Format-Table
:sumber
Ini sepertinya hanya terjadi ketika Anda menggunakan tanggal; 'Hampir apa pun setelah' itu termasuk cmdlet PS lainnya (hanya mencoba beberapa).
'date' seperti yang diketik tampaknya memanggil core Windows (seperti cmd.exe) untuk mendapatkan datestring itu kembali, PowerShell sedang mencoba melakukan sesuatu dengan string yang muncul.
Jika Anda membalikkan ini, 'apa pun di sini'; tanggal, tidak menunjukkan keanehan ini. Itu hanya melakukan ini ...
sumber