Wie führe ich eine .ps1 aus einer anderen .ps1-Datei aus?


14

Ich habe zwei PowerShell-Dateien. a.ps1 und b.ps1.

An einem Mittelpunkt in a.ps1 möchte ich mit der Ausführung von Code in b.ps1 beginnen und das a.ps1-Skript beenden.

Wie geht das, wenn man bedenkt, dass sich beide Dateien im selben Ordner befinden?


Im Moment benutze ich PS 'Path File' ohne Erfolg
GibboK

Antworten:


4

Ist es in Ordnung, wenn b.ps1 in einem neuen Power Shell-Prozess ausgeführt wird? Wenn ja, sollte das Folgende das tun, was Sie beschreiben.

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

"Invoke-Expression" wird im selben Prozess ausgeführt, wartet jedoch auf die Beendigung von b.ps1.



2

Ich habe dies aus einem anderen Artikel erhalten, aber es kann hier angewendet werden: Danke ( /programming//users/3905079/briantist )

Wenn Sie in einer Sitzung mehrere Anrufe an einen Remotecomputer tätigen möchten, erstellen Sie zunächst eine PSSession:

$session = New-PSSession -ComputerName $ComputerName

Verwenden Sie diese Sitzung dann in allen nachfolgenden Aufrufen:

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

} Schließen Sie dann die Sitzung, wenn Sie fertig sind:

Remove-PSSession -Session $session

Auch wenn Sie nicht genau wissen, wie das Skript aussehen wird, aber wissen, wo Ihr Skript startet, können Sie Folgendes tun:

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

(Das ist meins)


0

Verwenden Sie die magische Variable $ PSScriptRoot, um auf Ihr aktuelles Verzeichnis zu verweisen. Rufen Sie dann Skript B mit dem kaufmännischen Und ("Anrufoperator") auf:

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

Wenn Sie die Variablen von B im Bereich von A behalten möchten, können Sie das Skript mit dem Dot-Sourcing-Operator ausführen:

$script = $PSScriptRoot+"\b.ps1"
. $script
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.