批处理文件以运行ps脚本

时间:2019-01-31 14:24:13

标签: powershell batch-file

因此,我有一个包含powershell脚本的文件夹,然后运行一个脚本并将其复制到新目录并运行主脚本,这又将复制其余脚本并运行。

这已经在ISE和visual Studio代码中进行了测试,并且可以正常工作,但是,当我使用批处理文件运行第一个脚本时,它将执行第一个副本,然后执行其他无法找到的副本,建议c: \是根。不是脚本的实际位置。

我无法定义脚本的位置,只是在第一个脚本所在的文件夹中,因此是副本。

我正在使用$ PSScript root来确定根目录,这显示了第一个脚本的目录。

如前所述,它可以独立运行,但是我想将其集成,以便用户只需单击图标即可。

第一个脚本

$Script:E0 =  $PSScriptRoot 
$Script:Es =  $PSScriptRoot  +"\" + "Main Script.psm1"
$Script:Ma32 = "C:\Temp\Scripts"
$script:E1 = "\"
$Script:E2 =  "Main Script.psm1"
$Script:E3 = $Ma32 + $E1 + $E2
$Script:E4 = $Ma32 + "\Errors\"

Function Run{
copy-item $Es $Ma32
Import-Module $E3 -force
}

第二脚本

$M = "\Members_Complete.psm1"
$Script:Sc1 = $E0 + $M
$Script:Ns1 = $PSScriptRoot + $F
Function Get-Scripts{
copy-item $Sc1 $Ma32
}

因此它可以很好地将第一个脚本复制到c:\ temp \ Scripts中,但是在第二个脚本中却失败了,因为它正在查看c:\而不是先前的目录。

1 个答案:

答案 0 :(得分:0)

似乎我需要使$ Script:E0 = $ PSScriptRoot成为全局变量,以便它读取$ Global:E0 = $ PSScriptRoot,以便可以在其余模块中读取它