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?
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.
Dans a.ps1,
& .\b.ps1
la façon dont vous invoquez d'autres programmes
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)