Как выполнить .ps1 из другого файла .ps1?


14

У меня есть два файла PowerShell. a.ps1 и b.ps1.

В центральной точке a.ps1 я хочу начать выполнение кода в b.ps1 и завершить сценарий a.ps1.

Как это сделать, учитывая, что оба файла находятся в одной папке?


в настоящее время я использую PS 'path file' безуспешно
GibboK

Ответы:


4

Это нормально, если b.ps1 выполняется в новом процессе Power Shell? Если так, то следующее должно делать то, что вы описываете.

Invoke-Item (start powershell ((Split-Path $MyInvocation.InvocationName) + "\b.ps1"))

Invoke-Expression выполняется в том же процессе, но ожидает завершения b.ps1.



2

я получил это из другой статьи, но это может применяться здесь: спасибо ( /programming//users/3905079/briantist )

Во-первых, если вы хотите сделать несколько вызовов в одном сеансе на удаленном компьютере, сначала создайте сеанс PSSession:

$session = New-PSSession -ComputerName $ComputerName

Затем используйте этот сеанс во всех последующих вызовах:

Invoke-Command -Session $session -File $filename
Invoke-Command -Session $session -ScriptBlock {
# Some code

} Затем закройте сеанс, когда вы закончите:

Remove-PSSession -Session $session

также, если вы точно не знаете, будет ли этот скрипт, но знаете, с чего начинается ваш скрипт, вы можете сделать это:

$strInst = Get-ChildItem -Path $PSScriptRoot -Filter Import-Carbon.ps1 -recurse -ErrorAction SilentlyContinue -Force | Select Directory
Invoke-Experssion (start Powershell ($strinst\Import-Carbon.ps1)

(это мое)


0

Используйте волшебную переменную $ PSScriptRoot для ссылки на ваш текущий каталог. Затем вызовите скрипт B с амперсандом («Оператор вызова»):

$script = $PSScriptRoot+"\b.ps1"
& $script

Если вы хотите сохранить переменные из B в области A, вы можете запустить скрипт, используя оператор поиска точек:

$script = $PSScriptRoot+"\b.ps1"
. $script
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.