在Powershell中,如何在函数中设置变量值并使该值在父作用域中可用?

德布鲁姆

我正在尝试使用函数设置某些变量的值。我的代码如下:

$BackupFile = $null
$TaskSequenceID = $null
$OSDComputerName = $null
$capturedWimPath = $null

Function Set-OsToBuild 
{
  switch ($OsToBuild)
  {
    "Win7x64"
        { 
            $BackupFile = "Win7x64-SP1.wim"
            $TaskSequenceID = "WIN7X64BC"
            $OSDComputerName = "Ref-Win7x64"
            $capturedWimPath = "$($PathToMdtShare)\Captures\$BackupFile"
        }
  }
}

问题是$ BackupFile,$ TaskSequenceID,$ OSDComputerName和$ capturedWimPath的这些值在此函数之外为空/空。

正确的方法是什么?我想在此函数中设置这些值,并稍后在父范围的脚本中使用这些值。

Frode F.

变量在函数的local-scope中创建完成功能后,将删除这些变量。

Global: 
    The scope that is in effect when Windows PowerShell
    starts. Variables and functions that are present when
    Windows PowerShell starts have been created in the
    global scope. This includes automatic variables and
    preference variables. This also includes the variables, aliases,
    and functions that are in your Windows PowerShell
    profiles.

Local:  
    The current scope. The local scope can be the global 
    scope or any other scope. 

Script: 
    The scope that is created while a script file runs. Only
    the commands in the script run in the script scope. To
    the commands in a script, the script scope is the local
    scope.

资料来源:about_Scopes

如果您需要变量可用于脚本,则将它们写入script作用域。

$BackupFile = $null
$TaskSequenceID = $null
$OSDComputerName = $null
$capturedWimPath = $null

Function Set-OsToBuild 
{
  switch ($OsToBuild)
  {
    "Win7x64"
        { 
            $script:BackupFile = "Win7x64-SP1.wim"
            $script:TaskSequenceID = "WIN7X64BC"
            $script:OSDComputerName = "Ref-Win7x64"
            $script:capturedWimPath = "$($PathToMdtShare)\Captures\$BackupFile"
        }
  }
}

如果要保留整个会话的值(直到关闭powershell进程),则应使用global范围。

$global:BackupFile = $null
$global:TaskSequenceID = $null
$global:OSDComputerName = $null
$global:capturedWimPath = $null

Function Set-OsToBuild 
{
  switch ($OsToBuild)
  {
    "Win7x64"
        { 
            $global:BackupFile = "Win7x64-SP1.wim"
            $global:TaskSequenceID = "WIN7X64BC"
            $global:OSDComputerName = "Ref-Win7x64"
            $global:capturedWimPath = "$($PathToMdtShare)\Captures\$BackupFile"
        }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在函数中设置变量值?

来自分类Dev

如何在 If 中设置变量值

来自分类Dev

如何在angularjs模板中设置范围变量值

来自分类Dev

如何在Flask HTML模板中设置变量值

来自分类Dev

如何在<input value =''“>中设置Javascript的变量值

来自分类Dev

如何在angularjs模板中设置范围变量值

来自分类Dev

如何在类中存储变量值,即“设置”?

来自分类Dev

如何在jquery中的函数外获取变量值

来自分类Dev

如何在FreeMarker函数中传递分配变量值

来自分类Dev

根据条件变量中的值设置变量值

来自分类Dev

如何在子类构造方法中获取父类变量值

来自分类Dev

设置成员变量值后,值将在getter函数中更改

来自分类Dev

如何在Jade中设置变量值之前检查变量是否存在:Template Engine

来自分类Dev

在控制器中设置的变量值。如何在XAML.cs中获得它?

来自分类Dev

如何在 JavaScript 中为新的变量值分配一个变量值

来自分类Dev

如何在事件中获取JavaScript中的变量值?

来自分类Dev

在Ansible中设置变量值时如何使用算术?

来自分类Dev

如何在Web.config文件中设置变量值

来自分类Dev

如何访问 map 函数中的变量值?

来自分类Dev

如何在Lisp中的函数内全局更改变量值

来自分类Dev

如何在动画过程中添加缓动函数以增加变量值

来自分类Dev

如何在C / C ++中的函数调用之间使变量值持久化

来自分类Dev

如何在按钮单击时更新 setinterval 函数中的变量值

来自分类Dev

无法在emacs中设置变量值?

来自分类Dev

在POSIX shell中,如何打印变量值的值

来自分类Dev

如何在R Markdown文档中插值变量值

来自分类Dev

如何编写将在父对象内设置变量值的函数?

来自分类Dev

如何在GridView中绑定变量值?

来自分类Dev

如何在C#中更改SSIS变量值

Related 相关文章

  1. 1

    如何在函数中设置变量值?

  2. 2

    如何在 If 中设置变量值

  3. 3

    如何在angularjs模板中设置范围变量值

  4. 4

    如何在Flask HTML模板中设置变量值

  5. 5

    如何在<input value =''“>中设置Javascript的变量值

  6. 6

    如何在angularjs模板中设置范围变量值

  7. 7

    如何在类中存储变量值,即“设置”?

  8. 8

    如何在jquery中的函数外获取变量值

  9. 9

    如何在FreeMarker函数中传递分配变量值

  10. 10

    根据条件变量中的值设置变量值

  11. 11

    如何在子类构造方法中获取父类变量值

  12. 12

    设置成员变量值后,值将在getter函数中更改

  13. 13

    如何在Jade中设置变量值之前检查变量是否存在:Template Engine

  14. 14

    在控制器中设置的变量值。如何在XAML.cs中获得它?

  15. 15

    如何在 JavaScript 中为新的变量值分配一个变量值

  16. 16

    如何在事件中获取JavaScript中的变量值?

  17. 17

    在Ansible中设置变量值时如何使用算术?

  18. 18

    如何在Web.config文件中设置变量值

  19. 19

    如何访问 map 函数中的变量值?

  20. 20

    如何在Lisp中的函数内全局更改变量值

  21. 21

    如何在动画过程中添加缓动函数以增加变量值

  22. 22

    如何在C / C ++中的函数调用之间使变量值持久化

  23. 23

    如何在按钮单击时更新 setinterval 函数中的变量值

  24. 24

    无法在emacs中设置变量值?

  25. 25

    在POSIX shell中,如何打印变量值的值

  26. 26

    如何在R Markdown文档中插值变量值

  27. 27

    如何编写将在父对象内设置变量值的函数?

  28. 28

    如何在GridView中绑定变量值?

  29. 29

    如何在C#中更改SSIS变量值

热门标签

归档