Powershellを使用して、指定された数に基づいてランダムな文字を選択し、それぞれを一意の変数に動的に割り当てるにはどうすればよいですか?
私は以下のコードを持っていますが、上記の方法がわかりません。何かアイデアがありますか?
$Count =3
$a = Get-Random -InputObject 'a','b','c','d','e','f','g','h','i','j', 'k', 'l', 'm','n' -Count $Count
各文字の出力は、Ar1、Ar2、Ar3($ Count = nの場合はArnなど)のような3つの異なる変数に格納されると思います。
あなたが本当に明確な変数が必要な場合は($Ar1
、$Ar2
、... $Ar<n>
)、ここで最も簡潔なソリューションです:
$iref = [ref] 1
$Count = 3
Get-Random -InputObject ([char[]] (([char] 'a')..([char] 'n'))) -Count $Count |
New-Variable -Force -Name { 'Ar' + $iref.Value++ }
注:([char[]] (([char] 'a')..([char] 'n')))
はの略です
'a','b','c','d','e','f','g','h','i','j', 'k', 'l', 'm','n'
。
PowerShell Coreでは、を使用するだけで済みます('a'..'n')
。
また、-Name
引数(作成する変数の名前)がスクリプトブロックを介して動的に計算される方法にも注意してください。スクリプトブロックのこのいわゆる遅延バインドの使用法では、子変数スコープで実行されるため、インスタンスを使用して呼び出し元のスコープ内のシーケンス番号を参照する必要があります。対照的に、に渡すスクリプトブロックとコマンドレットは、呼び出し元のスコープで直接実行されます。この驚くべき不一致については、このGitHubの問題で説明しています。[ref]
$iref
ForEach-Object
Where-Object
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加