0

Write-Host私はPowerShellコマンドラインのカスタム変数を使用できますが、定義済みの変数は同じ方法では動作しません。PowerShellのコマンドラインからあらかじめ定義された変数をエコーする方法は?

定義済みの変数をエコーする適切な方法は何ですか。

Write-Host $pathが動作します。
Write-Host $PSScriptRootはありません。

ここに私のコードです。

powershell.exe -ExecutionPolicy ByPass -Command "& { $path = """test"""; Write-Host $path; Write-Host $PSScriptRoot; }" 

私は、変数として現在のスクリプトのディレクトリを持っていると思います。

このようなものは$RootPath = Split-Path (Split-Path $PSScriptRoot -Parent) -Parentです。

+7

ファイル内のスクリプトに対して '$ PSScriptRoot'が定義されています。あなたはファイルベースのスクリプトを実行していないので、 '$ PSScriptRoot'は空です。現在のディレクトリが必要な場合は、(PowerShellの意見、またはオペレーティングシステムの意見に応じて) 'pwd'または' [Environment] :: CurrentDirectory'を使います。 –

+0

@ JeroenMostert両方の例を挙げてください。 –

+0

'Write-Host(分割パス(pwd) - 親)'?または変数を最初に設定してください: '$ path = pwd'。これは、コマンドレットの出力を別のコマンドレットの入力として使用する基本的なケースです。 –

答えて

0

現在の場所があなたの望むものなら、これはいつも私のために働いています。

(Get-Location).path 

その他の事前定義済みの変数についても知りたい場合は、書き込みホストが機能するはずです。

Get-Variableまたは単にVariableはすべての定義済みの変数を表示します。 $PSScriptrootを見ると、空であることが分かります。それがあなたのために働いていないように見える理由です。

関連する問題