Powershell 批处理文件以运行ps脚本

Powershell 批处理文件以运行ps脚本,powershell,batch-file,Powershell,Batch File,因此,我有一个包含powershell脚本的文件夹,然后我运行一个脚本,它将复制到一个新目录并运行主脚本,然后复制其余脚本并运行 这已经在ISE和visual Studio代码中进行了测试,它们工作得很好,但是当我使用批处理文件运行第一个脚本时,它执行的第一个副本很好,然后它找不到其他副本,建议c:\是根。而不是脚本实际所在的位置 我无法定义脚本的位置,只是在第一个脚本所在的文件夹中,因此是副本 我使用$PSScript root来确定根目录,这显示了第一个脚本的目录 如前所述,它作为一个独立的

因此,我有一个包含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
}
第二个脚本

$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:\而不是上一个目录。

似乎我需要将$script:E0=$PSScriptRoot制作成一个全局变量,以便它读取$global:E0=$PSScriptRoot,以便可以在其余模块中读取它,似乎我需要将$Script:E0=$PSScriptRoot放入一个全局变量,这样它就可以读取$global:E0=$PSScriptRoot,这样就可以在其余模块中读取它。我认为应该将子脚本的路径作为参数传递,以确保下一个脚本具有正确的路径。