2011-08-12 15 views
2

私はPowerGui 3.0でスクリプトファイルのドットソースを作成しようとしています。dot-source failing oin powergui


用語」。\ PowerShell.Common.ps1' は 、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。スペル の名前を確認するか、パスが含まれている場合は、パスが であることを確認してから、もう一度やり直してください。 Dで:6 チャー:。TFS \ SharePointの\ Devの\展開\ AutoSPInstaller \ SP2010 \ AutoSPInstaller AutoSPInstallerFunctionsCustom.ps1 \ \ 31 + \ PowerShell.Common.ps1 < < < < + CategoryInfo:ObjectNotFound: (。 \ PowerShell.Common.ps1:文字列)[]、CommandNotFoundException + FullyQualifiedErrorId:ファイル言わ内CommandNotFoundException


そしてPowerguiブロックはその後、私のスクリプト機能を提供していません - 親スクリプトのコンテキストに敏感なリストに。

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

答えて

5

を確認して、Powerguiブロックのコマンドラインからファイルをソースにドットにその現在の作業ディレクトリスクリプトのディレクトリにあります。これを確認するには、PowerGUIのコマンドラインで$PWDと入力します。あなたがこれを行うだろうスクリプトから別のスクリプトを参照するように

:スクリプトのディレクトリを取得

# 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" 

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

4

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

は、より堅牢なソリューションがこれです:偶然にも

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

、私は正しく、別のSOの質問にスクリプトディレクトリを得ることのこの非常にポイントを分析する詳細な議論を書きました。私の長年の答えを繰り返すのではなく(私はthis linkを提供します。

0

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

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

関連する問題