在Powershell中使用子脚本修改父脚本中的变量

汤姆

我有两个Powershell脚本。我必须使用子脚本分配父变量使用父Powershell脚本调用子Powershell脚本

parent.ps1

$count = $Null

child.ps1

$count = 10

如何确保子脚本中的更改反映在父脚本中?

mklement0

Manuel Batsching的答案向您展示了如何使用点源间接解决问题:通过直接在父脚本的作用域中执行子脚本所有子脚本的(脚本级)变量(以及其他定义,即函数和别名)直接在父脚本的作用域中创建,这可能是不希望的。

PowerShell确实提供了在其他范围内有选择地修改变量的机制,但是最好避免使用它们,因为您在脚本之间创建了紧密的耦合,这使得它们难以维护。而是使用其他机制通过output以最简单的形式在脚本之间传递信息

如果您仍然想通过修改父作用域中的变量来解决问题,则可以使用以下命令:

# When run in child.ps1 that was invoked (normally) by parent.ps1,
# sets $count to 1 in the scope of *parent.ps1*.
Set-Variable -Scope 1 -Name count -Value 10

Scope -1引用调用范围范围(2将引用祖父母范围,依此类推)-请参见Set-Variable

互补地,范围改性剂$script:$global:可以与变量名在(相同)的目标变量可以使用脚本范围和全球范围(例如,$script:foo = 'bar'可被用来设定从一个内部的脚本级变量功能在同一个脚本所定义;应该避免创建或修改全局变量,因为即使在脚本退出后它们仍然会持续存在)-请参阅about_Scopes

为了完整性:

  • 范围修饰符$local:允许您显式引用当前(本地)范围;它很少使用,因为当您仅通过名称分配变量时(例如,创建局部变量)隐含了当前作用域$foo = 'bar'$foo

    • 但是,获取变量$local:foo并不一定就是$foo:由于PowerShell的动态作用域,如果当前范围中不存在此类变量,则$foo返回祖先范围的变量值(如果有)相反,如果当前作用域中定义了该名称,则严格按该名称返回变量的值$local:foo

    • 抑制给定变量的动态作用域,即防止子级作用域看到它(默认情况下),请使用$private:scope修饰符创建它

    • 请参阅此答案以获取有关PowerShell动态范围和作用域的更多信息$private:

  • 范围修饰符$using:用于远程处理作业的上下文中它实际上并没有在调用者的上下文中引用变量本身,而是引用-see about_Remote_Variables

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在我的python脚本中使用powershell变量?

来自分类Dev

如何在Powershell脚本传入的SQL脚本中使用变量

来自分类Dev

shell脚本-如何在shell脚本中使用变量而不在脚本中定义变量

来自分类Dev

如何在Powershell脚本中使用Jenkins变量

来自分类Dev

在PowerShell脚本中使用秘密变量的正确方法

来自分类Dev

将powershell命令的输出保存在变量中并在批处理脚本中使用它吗?

来自分类Dev

喜欢在变量中获取Powershell脚本的输出以在批处理文件中使用

来自分类Dev

如何在Dev Ops管道中使用Azure脚本访问Powershell中的变量

来自分类Dev

喜欢在变量中获取Powershell脚本的输出以在批处理文件中使用

来自分类Dev

PowerShell脚本中的变量清除

来自分类Dev

PowerShell脚本中的变量清除

来自分类Dev

在SQL脚本中使用变量

来自分类Dev

在脚本中使用变量 Grep

来自分类Dev

在 psql 脚本中使用变量

来自分类Dev

我如何在从Powershell脚本传入的SQL脚本中使用变量

来自分类Dev

是否可以忽略PHP中父脚本退出子脚本?

来自分类Dev

为什么在 C# 中的 Powershell 脚本中使用 Runspace

来自分类Dev

使用环境变量在 VBA 中打开 PowerShell 脚本

来自分类Dev

如何在PHP中存储变量以在不同脚本中使用?

来自分类Dev

在url中使用GET变量在Perl中执行php脚本

来自分类Dev

在Python脚本中的Snowflake SQL中使用变量

来自分类Dev

从文件中读取变量以在bash脚本中使用会去除\

来自分类Dev

从文件中读取文本以在 bash 脚本中使用变量

来自分类Dev

如何从Powershell脚本运行Node JS脚本并在PowerShell脚本中使用Node JS脚本的输出?

来自分类Dev

在使用awk的bash脚本中使用变量

来自分类Dev

在脚本中使用SSH的BASH子进程?

来自分类Dev

Powershell在脚本块中扩展变量

来自分类Dev

在TeamCity Powershell脚本中更新变量

来自分类Dev

在HTML中使用VBScript编写PowerShell脚本

Related 相关文章

  1. 1

    在我的python脚本中使用powershell变量?

  2. 2

    如何在Powershell脚本传入的SQL脚本中使用变量

  3. 3

    shell脚本-如何在shell脚本中使用变量而不在脚本中定义变量

  4. 4

    如何在Powershell脚本中使用Jenkins变量

  5. 5

    在PowerShell脚本中使用秘密变量的正确方法

  6. 6

    将powershell命令的输出保存在变量中并在批处理脚本中使用它吗?

  7. 7

    喜欢在变量中获取Powershell脚本的输出以在批处理文件中使用

  8. 8

    如何在Dev Ops管道中使用Azure脚本访问Powershell中的变量

  9. 9

    喜欢在变量中获取Powershell脚本的输出以在批处理文件中使用

  10. 10

    PowerShell脚本中的变量清除

  11. 11

    PowerShell脚本中的变量清除

  12. 12

    在SQL脚本中使用变量

  13. 13

    在脚本中使用变量 Grep

  14. 14

    在 psql 脚本中使用变量

  15. 15

    我如何在从Powershell脚本传入的SQL脚本中使用变量

  16. 16

    是否可以忽略PHP中父脚本退出子脚本?

  17. 17

    为什么在 C# 中的 Powershell 脚本中使用 Runspace

  18. 18

    使用环境变量在 VBA 中打开 PowerShell 脚本

  19. 19

    如何在PHP中存储变量以在不同脚本中使用?

  20. 20

    在url中使用GET变量在Perl中执行php脚本

  21. 21

    在Python脚本中的Snowflake SQL中使用变量

  22. 22

    从文件中读取变量以在bash脚本中使用会去除\

  23. 23

    从文件中读取文本以在 bash 脚本中使用变量

  24. 24

    如何从Powershell脚本运行Node JS脚本并在PowerShell脚本中使用Node JS脚本的输出?

  25. 25

    在使用awk的bash脚本中使用变量

  26. 26

    在脚本中使用SSH的BASH子进程?

  27. 27

    Powershell在脚本块中扩展变量

  28. 28

    在TeamCity Powershell脚本中更新变量

  29. 29

    在HTML中使用VBScript编写PowerShell脚本

热门标签

归档