Як виконати .ps1 з іншого файлу .ps1?


14

У мене є два файли PowerShell. a.ps1 і b.ps1.

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

Як це зробити, враховуючи, що обидва файли розташовані в одній папці?


на даний момент я без успіху використовую PS-файл файлу
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 за допомогою ampersand ("Оператор виклику"):

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

Якщо ви хочете зберегти змінні з B в області A, ви можете запустити скрипт за допомогою оператора пошуку точок:

$script = $PSScriptRoot+"\b.ps1"
. $script
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.