61

このような疑似構文を含むスクリプト ファイルをインクルードしたいと思います。

Include '.\scripA.ps1'

しかし、私が見つけた唯一のものは、次のようなものです。

$thisScript = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
. ($thisScript + '.\scriptA.ps1')

それは醜いです。

相対パスでスクリプトを含める良い方法はありますか?

4

7 に答える 7

124

次のように $PSScriptRoot パラメーターを利用できます。

. "$PSScriptRoot\script.ps1"
于 2013-11-26T11:42:31.587 に答える
29

ファイルをドット ソース (インクルード) することができます。

. .\scriptA.ps1

スクリプトの完全なパスを取得するには:

解決パス .\scriptA.ps1

于 2009-03-26T09:45:40.957 に答える
21

すでに述べたように、ドットソーシングは特にきれいではありませんが、最も簡単なオプションです。ただし、この形式では少しすっきりします。

$ScriptDirectory = Split-Path $MyInvocation.MyCommand.Path
. (Join-Path $ScriptDirectory ScriptA.ps1)

また、明示的にするのに役立つ相対パスに関する注意:元の投稿は、現在の作業ディレクトリからの相対パスが必要であることを示唆しているように見える場合があります。実際には、現在のスクリプトのソースディレクトリを基準にすることを目的としています(alex2k8独自のコードサンプルが示すように)。したがって、これにより、現在のスクリプトが同じリポジトリから他のスクリプトにアクセスできるようになります。

于 2011-06-02T17:19:45.217 に答える
8

残念ながらいい方法はありません。V1 では、PowerShell はこの考え方をまったくサポートしていません。本当にあなたがとっているアプローチは最善のアプローチです

于 2009-03-26T01:44:05.183 に答える
6

V2 (Win7/2008R2 以降のネイティブ。 を参照$psversiontable.psversion) では、次のようなファイルを簡単に含めることができます。

. "RelativeOrAbsolutePathToFile\include.ps1"

$result = FunctionInIncludeFile()

参考:
スクリプトで Windows PowerShell 関数を再利用する方法

于 2013-03-22T09:05:08.947 に答える