2017-06-25 21 views
1

私のスクリプトの引数として値が与えられておらず、存在しているように見える場合には、スクリプトに配列をデフォルト値のとして設定しようとしていますPowershellに配列であることを理解させるいくつかの問題があります。配列にデフォルトの引数を設定する方法

私はそうとのparamsを設定しました:

param (
    [string]$games = @('Subnautica', 'Gearcity') 
) 

問題は$gamesは今、文字列「Subnautica Gearcity」の値を取得していることのようです。少なくともそれは変数の出力です。カンマは消えているように見え、したがって配列を移動しようとすると配列はforeach ($game in $games) { random jabber }を使用します。この問題が発生した

+1

ここでの両方の答えは、事実上同一であり、お互いに数分以内に投稿されていますが、有効な解決策です。 好奇心が強い場合(完全にオプション):事実上同じ回答を投稿することは、[このメタ・ディスカッション](https://meta.stackoverflow.com/q/351296/45375)の主題であり、そのディスカッション_may_にはその本質的なメリットを超えた回答のスコアへの影響。 – mklement0

答えて

8

理由は、あなたのパラメータ$gamesが文字列であることを指定していることを、あなたがしたいことは、文字列の配列です:string[]ので、あなたのコードは次のようになります。

param (
    [string[]]$games = @('Subnautica', 'Gearcity') 
) 
5

ライン[string]$games = @('Subnautica', 'Gearcity')は文字列になり。文字列配列にするには、[]を追加すると配列になります。

[string[]]$games = @('Subnautica', 'Gearcity')