2017-04-26 8 views
3

これは主に動作します。スプラットする前にハッシュテーブルにパラメータを追加しようとしています。しかし、私が追加しようとしているパラメータは2つの文字列の集合です。SplashingのためにHashtableに複数文字列パラメータを追加する

$myHT = @{ 
    From   = '[email protected]' 
    To   = '[email protected]' 
    SmtpServer = 'mail.x.com' 
} 

$myHT.Add("Attachments","$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf") 

Send-MailMessage @myHT 

もちろんPowerShellには、3つの別々のパラメータ、それに応じてとエラーがあるとして、これを扱います。

$myHT.Add("Attachments","`"$PSScriptRoot\x.pdf`", `"$PSScriptRoot\y.pdf`"") 

ドライブを見つけることができません:だからこれを是正するために、私はと同類のものをしようとしています。名「"C」とのドライブが存在しません。

$myHT.Add("Attachments","$PSScriptRoot\x.pdf, $PSScriptRoot\y.pdf") 

を与えられたパスのフォーマットがサポートされていません。

私はここで構文エラーを作っていますように私は感じるが、

誰もこの問題を経験したことがありますか?

+2

'ので、基本的に2列(またはそれ以上)の配列を追加し、(「名前」、@(「文字列1」、「string2のを」))'追加。 '@()'は配列の「表現」です – 4c74356b41

答えて

2

.Add()メソッドは引数だけをとり、2番目の引数として渡すものはのようにに割り当てられます。それがあることを確認するために

$myHT.Add("Attachments", ("$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf")) 

注PS配列"$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf"周り(...):あなたのケースでは

、あなたは単一第二引数としてその配列を渡す必要がありますので、配列を割り当てますそのように認識される。

@(...)を使用することもオプションですが、一般的には不要です(舞台裏で不要な作業を行う)。


また、割り当てをより読みやすくする要素を追加するためにハッシュテーブルへの鍵ベースのアクセスを使用して:あなたはすでにあなたがAttachments前に使用する配列の値を知っている場合

$myHT.Attachments = "$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf" 

# Equivalent 
$myHT['Attachments'] = "$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf" 
+0

説明をありがとう、これは意味があり、私のために働きます。 –

+0

@MacroPower:それを聞いてうれしい。 – mklement0

1

ハッシュテーブルは、あなたがの簡単な解決策を使用することができ、初期化されている:

$myHT = @{ 
    From   = '[email protected]' 
    To   = '[email protected]' 
    SmtpServer = 'mail.x.com' 
    Attachments = "$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf" 
} 

Send-MailMessage @myHT 
+1

ありがとう、私はこれをやっていない理由があります。実際のスクリプトでは、何が付いているかを判断する条件があります(もしあれば)。 –

関連する問題