web-dev-qa-db-fra.com

Comment exécuter un fichier .ps1 à partir d'un autre fichier .ps1?

J'ai deux fichiers PowerShell. a.ps1 et b.ps1.

Au centre de a.ps1, je souhaite commencer à exécuter le code dans b.ps1 et mettre fin au script a.ps1.

Comment le faire en considérant que les deux fichiers sont situés dans le même dossier?

13
GibboK

Est-ce correct si b.ps1 est exécuté dans un nouveau processus Power Shell? Si oui, ce qui suit devrait faire ce que vous décrivez.

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

"Invoke-Expression" s'exécute dans le même processus mais attend la fin de b.ps1.

4
user2543253

Dans a.ps1,

& .\b.ps1

la façon dont vous invoquez d'autres programmes

21
chingNotCHing

je viens d'un article différent, mais cela peut s'appliquer ici: merci ( https://stackoverflow.com/users/3905079/briantist )

Tout d'abord, si vous souhaitez effectuer plusieurs appels au cours d'une même session sur un ordinateur distant, créez d'abord une session PSSession:

$session = New-PSSession -ComputerName $ComputerName

Puis utilisez cette session dans tous les appels suivants:

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

} Puis fermez la session lorsque vous avez terminé:

Remove-PSSession -Session $session

aussi si vous ne savez pas exactement quel script sera, mais sachez que votre script commence, vous pouvez le faire:

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

(c'est à moi)

2
Kelly Davis