何时评估数据部分?

时间:2019-05-16 16:07:22

标签: powershell

何时评估PowerShell data sections

具体来说,它们在运行时定义/加载时仅被评估一次吗?还是对包含函数的每次执行都进行评估,即使它已经被定义/加载了?

我假设包含上下文是一个函数或高级函数,在定义/加载后将在单个会话中多次调用该上下文,而不是每次调用都必须重新加载的脚本文件(到目前为止)据我了解)。

1 个答案:

答案 0 :(得分:1)

测试这两个问题的脚本:

(get-date).TimeOfDay.ToString()
Start-Sleep -Milliseconds 100

DATA dat -supportedCommand Get-Date {
  get-date
}
Start-Sleep -Milliseconds 100

(get-date).TimeOfDay.ToString()
Start-Sleep -Milliseconds 100

$dat.TimeOfDay.ToString()

结果(请注意,第二行的时间是最晚的):

12:21:23.3191254
12:21:23.5393705
12:21:23.4306211

得出以下结论:

  • 立即执行数据节评估,不会延迟
  • “数据”部分仅评估一次,而不是每次使用
如果我们可以控制数据机制,那么

数据节将更加有用。例如,仅在需要时才读取大型文本文件,或在每次访问时刷新变量。