我有两个Powershell脚本a.ps1和b.ps1。我在a.ps1脚本中调用b.ps1脚本。 我需要将两个变量作为参数从a.ps1传递到b.ps1,如下所示。
//a.ps1 Script starts here
$variable1 ="This is Variable1"
$variable2 ="This is Variable2"
注意:我在如下所示的a.ps1脚本中调用b.ps1脚本,并将上述变量作为参数传递给b.ps1
. C:\filepath\b.ps1 $variable1 $variable2 //Calling b.ps1 script
//b.ps1 contains below code
$getVariable1= $args[0]
$getVariable2= $args[1]
echo $getVariable1
但是上面来自b.ps1的echo命令不会打印任何内容。以上参数传递有什么问题?
答案 0 :(得分:0)
有两个可能的问题:
#
(而不是//
)b.ps1
。详细信息为this MS article(不过,尝试从命令行运行a.ps
后,powershell会在本文中提示您。)Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
答案 1 :(得分:0)
b.ps1调用中的多余空间是什么?
一旦我纠正了这一点,我就会得到预期的结果。另外,如果您正在做的所有事情都发送到屏幕上,则无需使用Write-*(回显)。默认输出到屏幕。
最后,不需要在这里//进行注释,#和<##>在此站点上可以正常工作,如下所示。
环境
$PSVersionTable
<#
Name Value
---- -----
PSVersion 5.1.17763.503
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17763.503}
BuildVersion 10.0.17763.503
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
#>
Get-ExecutionPolicy
RemoteSigned
内容
# a.ps1
'running a.ps1 script, calling b.ps1'
$variable1 = "This is Variable1"
$variable2 = "This is Variable2"
.\b.ps1 $variable1 $variable2
内容
# b.ps1
'running b script'
'Showing output from a.ps1 variables'
$getVariable1= $args[0]
$getVariable2= $args[1]
$getVariable1
结果
.\a.ps1
running a.ps1 script, calling b.ps1
running b script
Showing output from a.ps1 variables
This is Variable1