2つのPowerShellファイルがあります。 a.ps1およびb.ps1。
A.ps1の中心点で、b.ps1のコードの実行を開始し、a.ps1スクリプトを終了します。
両方のファイルが同じフォルダーにあると見なしてそれを行う方法は?
B.ps1が新しいPower Shellプロセスで実行されても大丈夫ですか?もしそうなら、以下はあなたが説明することをするべきです。
Invoke-Item (start powershell ((Split-Path $MyInvocation.InvocationName) + "\b.ps1"))
「Invoke-Expression」は同じプロセスで実行されますが、b.ps1の終了を待ちます。
A.ps1では、
& .\b.ps1
他のプログラムを呼び出す方法
私は別の記事からこれを得ましたが、ここで適用できます:感謝( https://stackoverflow.com/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)
(私の物です)
マジック変数$ PSScriptRootを使用して、現在のディレクトリを参照します。次に、アンパサンドを使用してスクリプトBを呼び出します( "Call operator"):
$script = $PSScriptRoot+"\b.ps1"
& $script
Bの変数をAのスコープ内に保持する場合は、ドットソースオペレーターを使用してスクリプトを実行できます。
$script = $PSScriptRoot+"\b.ps1"
. $script