私は同様の問題を抱えており、PowerShell (完全なエンド ユーザー GUI アプリケーション) で記述されたプログラムを作成しており、ディスクからロードする必要があるファイルとリソースがたくさんあるため、多くの問題が発生しました。私の経験から、.現在のディレクトリを表すために使用することは信頼できません。現在の作業ディレクトリを表す必要がありますが、そうでないことがよくあります。PowerShell は、PowerShell が内部で呼び出された場所を保存しているよう.です。より正確には、PowerShell を最初に起動すると、デフォルトでホーム ユーザー ディレクトリ内で起動します。それは通常、ユーザーアカウントのディレクトリです。C:\USERS\YOUR USER NAME. その後、PowerShell は、PowerShell プロンプトを表示するかスクリプトを実行する前に、ディレクトリを呼び出し元のディレクトリ、または実行中のスクリプトが配置されているディレクトリに変更します。ただし、これは、PowerShell アプリ自体が最初にホーム ユーザー ディレクトリ内で起動した後に発生します。
And.は、PowerShell が開始された初期ディレクトリを表します。その.ため、必要なディレクトリから PowerShell を呼び出した場合にのみ、現在のディレクトリを表します。後で PowerShell コードでディレクトリを変更すると.、すべてのケースで変更が内部に反映されていないように見えます。場合によって.は、現在の作業ディレクトリを表し、他のディレクトリでは PowerShell (スクリプトではなくそれ自体) が呼び出され、一貫性のない結果につながる可能性があります。このため、インボーカー スクリプトを使用します。内部に単一のコマンドを含む PowerShell スクリプト:
POWERSHELL. これにより、必要なディレクトリから PowerShell が呼び出されるようになるため、.現在のディレクトリを表します。ただし、後で PowerShell コードでディレクトリを変更しない場合にのみ機能します。スクリプトの場合、ファイル オプションが含まれていることを除いて、最後に述べたものと同様の呼び出しスクリプトを使用します
POWERSHELL -FILE DRIVE:\PATH\SCRIPT NAME.PS1。これにより、現在の作業ディレクトリ内で PowerShell が開始されます。
スクリプトをクリックするだけで、スクリプトがどこにあるかに関係なく、ホーム ユーザー ディレクトリから PowerShell が呼び出されます。現在の作業ディレクトリはスクリプトが配置されているディレクトリですが、PowerShell 呼び出しディレクトリはC:\USERS\YOUR USER NAMEであり.、状況に応じてこれら 2 つのディレクトリのいずれかを返すという結果になり、ばかげています。
しかし、このすべての騒ぎと呼び出し元スクリプトの使用を避けるために、現在の作業ディレクトリまたはスクリプトが呼び出されたディレクトリを表したい天候に応じて、現在のディレクトリを表す代わりに$PWDorを使用することができます。また、何らかの理由で、返された 2 つのディレクトリのうち他のディレクトリを取得したい場合は、 を使用できます。$PSSCRIPTROOT..$HOME
私は個人的に、メインのアプリ スクリプトを呼び出す PowerShell で開発したアプリのルート ディレクトリ内に呼び出し元スクリプトを持っているだけで、アプリのソース コード内の現在の作業ディレクトリを決して変更しないことを忘れないでください。これについて心配する必要はありません。.現在のディレクトリを表し、アプリケーションで問題なく相対ファイルのアドレス指定をサポートするために使用できます。これは、PowerShell の新しいバージョン (バージョン 2 より新しい) で機能するはずです。