Итак, у меня есть папка, содержащая сценарии powershell, затем я запускаю один сценарий, и он копирует в новый каталог и запускает основной сценарий, который, в свою очередь, копирует остальные сценарии и запускается.
Это было проверенои в коде ISE, и в Visual Studio, и они работают нормально, однако, когда я использую командный файл для запуска первого сценария, он выполняет первую копию великолепно, а затем другие, которые не удается найти, сообщая, что c: \ был корнем.не там, где на самом деле находятся сценарии.
Я не могу определить, где будут находиться сценарии, просто в той же папке, что и первый сценарий, следовательно, копия.
Я использую $ PSScriptroot, чтобы определить корневой каталог, это показывает каталог первого скрипта.
Как уже упоминалось, он прекрасно работает как автономный, однако я хочу интегрировать его так, чтобы пользователям нужно было только щелкнуть значок.
Первый сценарий
$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: \ а не предыдущий каталог.