如何将参数或变量从一个PowerShell脚本传递到另一个?
在cmd中,我可以通过在待运行的bat文件被声明之后列出它们来将参数从一个蝙蝠传递到另一个蝙蝠。然后,待运行的蝙蝠将它们接收为%1,%2,%3等。这可以在Powershell中完成吗?如何将参数或变量从一个PowerShell脚本传递到另一个?
我有一个ps1脚本,脚本1,提示用户的位置。该脚本已被照顾。该位置存储为变量; $同上。在第一个脚本中,有一点意味着用户可以选择一个将运行另一个ps1脚本的选项,脚本2具有更多的选项。我想从script1将$ loc传递给script2。
在SCRIPT1我曾尝试以下:
param ($loc)
start-process "\script2.ps1" -ArgumentList $loc
start-process "\script2.ps1" -$loc
start-process "\script2.ps1"
然后就是脚本2
args[0]
$loc
我知道,我可能只是不理解传递参数。事情是另一个选项称为蝙蝠脚本。那一个我使用-ArgumentList $ loc,它通过罚款。我在蝙蝠脚本中使用“Set loc =%1”选择该参数
在Variables.ps1中声明的变量位于“Script Scope”中。那就是你不能在声明它们的脚本范围之外看到它们。将Variables.ps1中的变量引入main.ps1范围的一种方法是“点源”Variables.ps1。实际上,这在main.ps1的作用域中运行Variables.ps1。要做到这一点,只要坚持一段时间和空间的脚本调用之前:
. .\Variables.ps1
$var1
$var2
你应该参考原始答案http://stackoverflow.com /一个/52277分之1864262 – 2016-02-04 20:10:38
param ($loc)
在.ps1
脚本定义脚本参数的顶部,所以称其为
PathToMyScript\MyScript.ps1 -loc ValueOfLoc
所有attributes you can apply,包括在一个脚本函数工作param
语句中使用[CmdletBinding()]
为好。
您不需要Start-Process
从另一个PowerShell脚本运行一个PowerShell脚本。只需拨打你想要的任何参数,第二脚本:
# script1.ps1
$loc = Read-Host 'Enter location'
C:\path\to\script2.ps1 $loc 'other parameter'
中,第二脚本参数列表例如可以通过$args
阵列访问:
# script2.ps1
Write-Host $args[0]
Write-Host $args[1]
你也可以定义一个名为参数,这样:
# script2.ps1
Param($Location, $Foo)
Write-Host $Location
Write-Host $Foo
或(更完整的)是这样的:
# script2.ps1
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$Location,
[Parameter(Mandatory=$false)]
[string]$Foo
)
Write-Host $Location
Write-Host $Foo
定义命名参数允许你传递参数,而不必担心他们的订单:
C:\path\to\script2.ps1 -Foo 'other parameter' -Location $loc
或自动带参数validated而不必实现在函数体中检查:
# script2.ps1
Param(
[ValidateSet('a', 'b', 'c')]
[string]$Location,
[ValidatePattern('^[a-z]+$')]
[string]$Foo
)
Write-Host $Location
Write-Host $Foo
如果传递的参数数多于命名参数,则将这些附加参数存储在$args
数组中:
PS C:\>cat test.ps1 Param($Foo) Write-Host $Foo Write-Host $args[0] PS C:\>.\test.ps1 'foo' 'bar' foo bar
欲了解更多信息,请参阅Get-Help about_Functions_Advanced_Parameters
。
我忘了添加,我用启动进程运行它,因为我想在一个单独的窗口中运行它。有没有更好的方法,它传递变量,在与已经运行的窗口分开的窗口中启动脚本。 – user3377627 2014-11-08 05:44:36
可能重复的[从另一个PowerShell脚本加载变量](http://stackoverflow.com/questions/1864128/load-variables-from-another-powershell-script) – 2016-02-04 20:12:32