Como executar um .ps1 de outro arquivo .ps1?

9

Eu tenho dois arquivos do PowerShell. a.ps1 e b.ps1.

Em um ponto central em a.ps1, quero começar a executar o código em b.ps1 e terminar o script a.ps1.

Como fazê-lo, considerando que ambos os arquivos estão localizados na mesma pasta?

    
por GibboK 24.02.2015 / 11:49

3 respostas

4

Tudo bem se o b.ps1 for executado em um novo processo Power Shell? Se assim for, o seguinte deve fazer o que você descreve.

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

"Invoke-Expression" é executado no mesmo processo, mas aguarda a finalização de b.ps1.

    
por 24.02.2015 / 12:44
15

Em a.ps1,

& .\b.ps1

a maneira como você invoca outros programas

    
por 25.02.2015 / 09:30
2

eu tenho isso de um artigo diferente, mas pode ser aplicado aqui: obrigado ( link )

Primeiro, se você quiser fazer várias chamadas em uma única sessão para uma máquina remota, primeiro crie uma PSSession:

$session = New-PSSession -ComputerName $ComputerName

Em seguida, use essa sessão em todas as chamadas subsequentes:

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

Em seguida, feche a sessão quando terminar:

Remove-PSSession -Session $session

também se você não souber exatamente qual script será, mas saber que o seu script começa, você pode fazer isso:

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

(isso é meu)

    
por 13.07.2016 / 20:00