如何在powershell脚本中使用Measure-Command?

问题描述 投票:0回答:1

我正在尝试编写一个小脚本来计时命令:

PS C:\Users\myUserName> cat timeSeb.ps1
"=> args = $args"
( Measure-Command { $args | Out-Default } ).ToString()
PS C:\Users\myUserName>

但是当我运行它时,我在输出中看不到文件列表:

PS C:\Users\myUserName> .\timeSeb.ps1 dir -force .smplayer
=> args = dir -force .smplayer
00:00:00.0026973
PS C:\Users\myUserName> 

EDIT0:如果我在交互式 powershell 会话中键入此命令,它会按预期工作:

PS C:\Users\myUserName> ( Measure-Command { dir -force .smplayer | Out-Default } ).ToString()


    Directory: C:\Users\myUserName\.smplayer


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        28/02/2024     18:14                file_settings
-a----        29/02/2024     11:01              8 favorites.m3u8
-a----        29/02/2024     11:01             77 hdpi.ini
-a----        22/02/2024     18:22          42405 player_info.ini
-a----        29/02/2024     11:01           1431 playlist.ini
-a----        29/02/2024     11:01              8 radio.m3u8
-a----        29/02/2024     11:01           8303 smplayer.ini
-a----        29/02/2024     11:01              8 tv.m3u8


00:00:00.0255996
PS C:\Users\myUserName> 

但是从我的 timeSeb.ps1 脚本来看,它不显示

dir -force
命令的输出

我希望看到

dir -force
命令的输出。

powershell parameter-passing measure
1个回答
0
投票

Measure-Command
无法访问
$args
,这就是为什么它不写任何东西。

你需要像

(Measure-Command -InputObject $args -Expression { $_ | Out-Default }).toString()

那样传递它

(或

($args | Measure-Command -Expression { $_ | Out-Default }).toString()

您的另一个示例将其值硬编码在字符串命令中,这就是它起作用的原因

© www.soinside.com 2019 - 2024. All rights reserved.