Windows 7のPowerShellスクリプトに単一のコマンドライン引数を渡そうとしましたが、スクリプトが引数を認識していないようです。それは私がコマンドラインで使用して、空であることに起因$args[0]
に失敗し、何も出力せずに何があってもPowerShellスクリプトは引数を受け取りません
foreach($arg in $args)
{
Write-Host "Arg: $arg";
}
以下の最初のラインを介して爆発します。しかし、スクリプトの残りの部分は、代わりにコマンドラインから割り当てようとしている変数の値をハードコードするだけです(単にそのファイルを開き、何かを実行する)。
私は特に受け入れ答えでリンクすることによって、この答えPassing a variable to a powershell script via command lineに触発され、試してみましたparam
ブロックを使用したが、それは同様に
param(
[string]$fileName
)
Write-Host "Filename: [ $fileName ]";
script.ps1 -filename SampleFile.txt
のように呼び出されたものをプリントアウトしませんでしたリンクの最初のスクリプトをコピーして新しいスクリプトに貼り付けます:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args)
{
Write-Host "Arg: $arg";
}
とし、それを1.ps1 1 2 3
と呼びます。出力はNum Args: 0
です。
私は間違っていますか?
PS:それは重要な場合は、ここで私は、同様にこの問題を持っているバージョン情報
PS Z:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
[mcve]を提供できますか?説明した動作をコードで再現することはできません。 – PetSerAl
私は最小限の完全な例を提供しましたが、これは動作するはずです。しかし、それは私のためには機能しません。この質問の目的は理由を理解することです。残念ながら、これは私のためにはうまくいかないので、検証可能な例の要件を満たす方法がありません。 – ajeh