2

PowerGui 3.0でスクリプトファイルをドットソースしようとしていますが、取得できるのは;だけです。


'。\PowerShell.Common.ps1'という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認して、再試行してください。D:\ TFS \ SharePoint \ Dev \ Deploy \ AutoSPInstaller \ SP2010 \ AutoSPInstaller \ AutoSPInstallerFunctionsCustom.ps1:6 char:31+。\PowerShell.Common.ps1 <<<< + CategoryInfo:ObjectNotFound:(。\PowerShell.Common。 ps1:String)[]、CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException


そして、powerGuiはその後、親スクリプトのコンテキスト依存リストで、上記のファイル内で私のスクリプト関数を提供しません。

ファイル「PowerShell.Common.ps1」はAutoSPInstallerFunctionsCustom.ps1と同じディレクトリにありますご協力いただきありがとうございます

4

3 に答える 3

5

PowerGUIのコマンドラインからファイルをドットソースするには、現在の作業ディレクトリがスクリプトのディレクトリにあることを確認してください。$PWDこれは、PowerGUIのコマンドラインで入力することで確認できます。

スクリプトから別のスクリプトを参照するには、次のようにします。

# Get the current script's directory
$MyDir = Split-Path $MyInvocation.MyCommand.Definition

# Dot-source the external script by using the current script's directory
. "$MyDir\ScriptName.ps1"

スクリプトのディレクトリを取得すると、現在の作業ディレクトリがスクリプトのディレクトリと同じでなくても、スクリプトの場所に関連するファイルを参照できるようになります。

于 2011-08-12T12:46:14.093 に答える
4

@Rynantは、問題が現在のディレクトリではなくスクリプトのディレクトリを参照する必要があることを指摘するのに確かに正しいです。ただし、彼のコードソリューションは部分的にしか正しくないことに注意することが重要です。実際、それが機能するかどうかは、どこで呼び出すかによって異なります。

より堅牢なソリューションは次のとおりです。

function Get-ScriptDirectory
{
    Split-Path $script:MyInvocation.MyCommand.Path
}

たまたま、別のSOの質問でスクリプトディレクトリを正しく取得するというまさにこの点を分析する詳細なディスカッションを書きました。私の長い答え(テスト車両と結果マトリックスを完備)を繰り返すのではなく、このリンクを提供します。

于 2011-08-13T14:37:57.180 に答える
0

この問題は、PowerGUI内から作業中のスクリプトを参照するときに発生します。

呼び出しパスを他のスクリプトに変更する代わりに、スクリプトをその場で実行することをお勧めします。つまり$PWD、スクリプトのディレクトリに設定します。これは、 Windowsエクスプローラーの右クリックコンテキストメニューを使用して、WindowsシェルからPowerGUIでスクリプトを開くことで最も簡単に実行できます。

于 2015-07-02T23:32:05.477 に答える