对于执行另一个 powershell 的 powershell,“&”和“.”之间有什么区别?
For powershell executing another powershell, what's the difference between "&" and "."
喜欢:
& another.ps1
和
. another.ps1
它们有什么区别?
我希望获取另一个 powershell 脚本的输出文本,同时不想导入另一个脚本中定义的内部函数。我可以使用什么声明?我发现即使是“&”命令也会自动导入其他 powershell 脚本的所有函数定义。
谢谢。
区别在于范围。 &
将 运行 脚本在它自己的范围内。 .
将 运行 当前范围内的脚本。
$ErrorView = 'CategoryView'
$x = 'Test'
. { Get-variable x -Scope 0 }
& { Get-Variable x -Scope 0 }
Name Value
---- -----
x Test
ObjectNotFound: (x:String) [Get-Variable], ItemNotFoundException
在第一个示例中,脚本是点源到当前范围,$x 在范围 0 可见。
在第二个示例中,脚本是使用 & 运算符调用的,$x 在范围 0 中不可见。
喜欢:
& another.ps1
和
. another.ps1
它们有什么区别? 我希望获取另一个 powershell 脚本的输出文本,同时不想导入另一个脚本中定义的内部函数。我可以使用什么声明?我发现即使是“&”命令也会自动导入其他 powershell 脚本的所有函数定义。
谢谢。
区别在于范围。 &
将 运行 脚本在它自己的范围内。 .
将 运行 当前范围内的脚本。
$ErrorView = 'CategoryView'
$x = 'Test'
. { Get-variable x -Scope 0 }
& { Get-Variable x -Scope 0 }
Name Value
---- -----
x Test
ObjectNotFound: (x:String) [Get-Variable], ItemNotFoundException
在第一个示例中,脚本是点源到当前范围,$x 在范围 0 可见。
在第二个示例中,脚本是使用 & 运算符调用的,$x 在范围 0 中不可见。