【问题标题】:How to use start-sleep with value assign in variable using Powershell?如何使用 Powershell 在变量中分配值的 start-sleep?
【发布时间】:2022-01-17 03:11:50
【问题描述】:

我想在 powershell 中使用 start-sleep。但我需要将值分配给变量。但是,如果变量不使用 [int],则该值似乎是不稳定的。如果我们想使用 start-sleep 值应该是像这样的 [int]$value 的 int 是真的吗?

这两个有区别吗?

$Value_1 = 9
[int]$Value_2 = 9

Start-Sleep -s $Value_1

Start-Sleep -s $Value_2

【问题讨论】:

  • 两个变量的类型都是int,一个是动态类型,另一个是类型约束。两者具有相同的效果。即使变量有一个只包含数字的stringStart-Sleep 也可以正常工作。
  • 你为什么认为它inconstant
  • @SantiagoSquarzon 但为什么等待时间不是 9 秒?我在执行之前和执行 start-sleep 之后输出了一个时间戳,它不是 9 秒。在计算机 A 中变为 8s,在计算机 B 中变为 4s
  • 能否输出前后的时间戳输出$Value_x并给我们看结果?

标签: powershell time delay wait pause


【解决方案1】:

命令本身接受很多格式,但大多数应该依赖隐式类型转换。在您的示例中,这应该没有什么区别。如果有差异,可能还有其他事情发生。将Get-Help 简单地运行为Start-Sleep 或者甚至只是简写Start-Sleep -? 可能是值得的。

检查documentation,您会发现-Seconds(没有理由使用简写),用于期望 System.Int32 和 PS 6+ 的命令将接受 double 作为输入。

而不是仅仅打印时间戳来确认运行Measure-Command 的行为可能更准确。

Measure-Command {Start-Sleep -Seconds $Value_1}
Measure-Command {Start-Sleep -Seconds $Value_2}

这应该让你得到这样的东西:

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 9
Milliseconds      : 11
Ticks             : 90118677
TotalDays         : 0.000104304024305556
TotalHours        : 0.00250329658333333
TotalMinutes      : 0.150197795
TotalSeconds      : 9.0118677
TotalMilliseconds : 9011.8677

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多