Ich verstehe, dass Semikolon ein Befehlstrennzeichen in Powershell ist. echo "hello"; dir
gibt diese Ausgabe.
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>
Aber warum gibt date; dir
diese Ausgabe?
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
quelle
quelle
date
. Es ist weder ein Alias noch eine Cmdlet- oder EXE-Datei (dasselbe Problem in PSv6 BTW)Antworten:
Da Powershell Anweisungen einzeln ausführt, wird meiner Meinung nach die Ausgabeformatierung der ersten Anweisung auf alle nachfolgenden Anweisungen angewendet.
Wenn
Get-Date
ein Objekt vomDateTime
Typ zurückgegeben wird, wird es als Liste formatiert, was sich auf Ihre 'dir'-Ausgabe auswirkt.Sie können diese Annahme testen, indem Sie den Rückgabetyp von
Get-Date
in Zeichenfolge mit der Option 'Format' ändern :(Dies erzeugt eine Standardausgabe für 'dir')
Oder indem Sie die Standardformatierung der Ausgabe ändern, indem Sie sie wie folgt weiterleiten
Format-Table
:quelle
Dies scheint nur zu geschehen, wenn Sie das Datum verwenden. "Fast alles andere danach", einschließlich anderer PS-Cmdlets (habe nur ein paar ausprobiert).
'Datum', wie eingegeben, scheint Windows-Kern (genau wie cmd.exe) aufzurufen, um diesen Datenstring zurückzubekommen. PowerShell versucht, etwas mit der angezeigten Zeichenfolge zu tun.
Wenn Sie dies umkehren, zeigt "irgendetwas hier", Datum, diese Seltsamkeit nicht. Es macht einfach das ...
quelle