因此,我有一个包含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:\而不是先前的目录。
答案 0 :(得分:0)
似乎我需要使$ Script:E0 = $ PSScriptRoot成为全局变量,以便它读取$ Global:E0 = $ PSScriptRoot,以便可以在其余模块中读取它