PowerShelllスクリプトを作成しようとしています。すでにスクリプトがマップされている場合は、まずそのリストをチェックします。リストのプリンタがマップされていない場合は、プリンタをマップします。Powershellで配列値を作成してアクセスする
プリンタだけを確認しても問題ありません。配列とforループを作成したとき、プリンタ名が間違っていたので動作しなくなりました。
私は配列の単一項目にアクセスできないようです。
これは私の現在のコードスニペットです:$printernames[0]
を呼び出すとき
[string[]] $printernames = "Buero Drucker","hase"
for($i = 0; $i -lt $printernames.Length; $i++)
{
$printerexists = [Boolean](Get-WmiObject win32_printer -Filter "Name = $printernames[$i]")
Write-Host "Printer $printernames[$i] exists: $printerexists"
}
今、私は次のことを得ることを期待する:
"Buero Drucker"
代わりに、私は次のように受信します。
"Buero Drucker hase[0]"
変数は本当に配列ではないようですが、私はその理由を伝えられません。
===== forループ編集=====
ザ・罰金や繰り返し処理2回動作します。したがって、私は、配列の作成が正しいことを期待しますが、私はすでに、変数$ Iをチェックし
変数のアクセスが間違っていること。それはあなたがしたい"Something.Property"
を返します。カッコ内の変数を展開
Printer Buero Drucker hase[0] exists: False
Printer Buero Drucker hase[1] exists: False
すばらしい情報はありがとうございます。この情報のソースはありますか? Googleで私は$ variablename [$ i] –
@julianbechtoldしか見つけられませんでした。これは変数などとは関係ありません。これは文字列内で変数を使用することと関係しています。[こちら](ここではhttps://kevinmarquette.github。 io/2017-01-13-powershell-variable-substitution-in-strings /)には、有用な情報がいくつかあります。 – ConnorLSW
$ printernames [$ i]は変数ではなく***式***です。したがって、$()は時にはcalle * expression squeezing *を実行し、()の内部で評価された式を変数として展開します。 – EBGreen