別の.ps1ファイルから.ps1を実行する方法は?


14

PowerShellファイルが2つあります。a.ps1およびb.ps1。

a.ps1の中心点で、b.ps1のコードの実行を開始し、a.ps1スクリプトを終了します。

両方のファイルが同じフォルダーにあることを考慮して、それを行う方法は?


現時点では、成功せずにPS 'パスファイル'を使用しています
-GibboK

回答:


4

新しいPower Shellプロセスでb.ps1を実行しても大丈夫ですか?その場合、次の説明に従ってください。

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

「Invoke-Expression」は同じプロセスで実行されますが、b.ps1の終了を待ちます。



2

私は別の記事からこれを得ましたが、ここに適用できます:ありがとう(/programming//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)

(私の物です)


0

マジック変数$ PSScriptRootを使用して、現在のディレクトリを参照します。次に、アンパサンド(「オペレーターの呼び出し」)を使用してスクリプトBを呼び出します。

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

Aのスコープ内でBの変数を保持する場合は、Dotソース演算子を使用してスクリプトを実行できます。

$script = $PSScriptRoot+"\b.ps1"
. $script
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.