web-dev-qa-db-ja.com

PowerShell PSScriptRootがnullです

$PSScriptRootを実行すると、nullが返されます。 PSバージョン4を使用しています。

$val  = Join-Path -Path $PSScriptRoot WebPlatformInstaller_AMD64_en-US.msi

エラー

Join-Path:空の文字列であるため、引数をパラメーター 'Path'にバインドできません。

11
kumar

ISEを使用する場合:

$psISE.CurrentFile.FullPath

ISEが起動すると、$ psISEが作成され、ISEインスタンスの現在のパスを決定するために使用できます。これはバージョン3.0で導入されました。

ISEオブジェクトモデル階層 を参照してください

シェルまたはISEでパスを取得する場合は、次のようなものを使用できます。

if ($psISE)
{
    Split-Path -Path $psISE.CurrentFile.FullPath        
}
else
{
    $global:PSScriptRoot
}
10
Xopher

この式が保存された.ps1スクリプトにあることを確認する必要があります。

これは、次の場合に発生する可能性があります。

  • PowerShell ISEコンソールでこのステートメントを使用します
  • スクリプトファイルなしでPowerShellコンソールでこのステートメントを使用します
  • PowerShell ISEで実行するためにこの式のみをマークしました
6
k7s5a