脚本和命令行中命令的不同行为

时间:2013-12-03 13:50:34

标签: powershell

如果我在脚本和命令行中执行以下两个命令,为什么会得到不同的输出?

ps
dir

是否存在自动管道行为?

这是两个命令的输出(输出缩短):

PS C:\Users\Robzzz> ps

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    682      73    73040      62340   423     2,31   8464 iexplore
    424      15     6332       6024    62             884 svchost

PS C:\Users\Robzzz> dir

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d-r--        23.09.2013     09:24            Contacts
d-r--        03.12.2013     15:30            Desktop

以下是脚本的输出(缩短输出):

PS C:\Users\Robzzz> .\psdir.ps1

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    682      73    73040      62340   423     2,31   8464 iexplore
    424      15     6332       6024    62             884 svchost

PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Users\Robzzz\Contacts
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Users\Robzzz
PSChildName       : Contacts
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : True
Name              : Contacts
Parent            : Robzzz
Exists            : True
Root              : C:\
FullName          : C:\Users\Robzzz\Contacts
Extension         : 
CreationTime      : 02.01.2012 09:38:38
CreationTimeUtc   : 02.01.2012 08:38:38
LastAccessTime    : 02.01.2012 09:38:38
LastAccessTimeUtc : 02.01.2012 08:38:38
LastWriteTime     : 23.09.2013 09:24:09
LastWriteTimeUtc  : 23.09.2013 07:24:09
Attributes        : ReadOnly, Directory
BaseName          : Contacts
Mode              : d-r--


PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Users\Robzzz\Desktop
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Users\Robzzz
PSChildName       : Desktop
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : True
Name              : Desktop
Parent            : Robzzz
Exists            : True
Root              : C:\
FullName          : C:\Users\Robzzz\Desktop
Extension         : 
CreationTime      : 02.01.2012 09:36:02
CreationTimeUtc   : 02.01.2012 08:36:02
LastAccessTime    : 03.12.2013 15:30:08
LastAccessTimeUtc : 03.12.2013 14:30:08
LastWriteTime     : 03.12.2013 15:30:08
LastWriteTimeUtc  : 03.12.2013 14:30:08
Attributes        : ReadOnly, Directory
BaseName          : Desktop
Mode              : d-r--

1 个答案:

答案 0 :(得分:1)

我同意谢伊的评论。我的第一个猜测是它可能是主机尝试以相同的格式解析不同类型的输出。

这是一篇很好的文章,概述了这个问题(如果是这样的话)。

http://tfl09.blogspot.com/2013/11/powershells-single-formatting-pipeline.html

编辑:您更新的输出确认这是问题所在。