退出代码和命令链

时间:2014-09-15 18:19:51

标签: powershell

如果我将一堆命令链接在一起,如:

$time_elapsed = (Measure-Command{Import-VM -Copy -GenerateNewId -Path $Path_name | Out-Host}).TotalMinutes

哪个命令的状态是$?持有?

是Measure-Command吗?进口-VM?或Measure-Command.TotalMinutes?

1 个答案:

答案 0 :(得分:1)

查看help about_Automatic_Variables下的文档$?变量的定义如下:

  

包含上次操作的执行状态。如果上一次操作成功则包含TRUE,如果失败则包含FALSE。

那么PowerShell中的操作是什么?我无法找到明确的答案 - 所以我将使用非官方的答案,直到可以澄清:操作是一个被调用的cmdlet或一个表达式的评估,例如运算符的使用和文字值。 / p>

考虑到这一点,我在你的陈述中至少计算了四个操作:

  • 测量命令
  • 导入-VM
  • OUT-主机
  • 将TotalMinutes分配给$ time_elapsed

这四个中的任何一个都可能导致当前语句终止 - 希望正常但当然任何可能会抛出异常。考虑到这一点,我不认为你总能确定一个陈述的哪个操作导致$?中的值被设置。