2017-03-07 2 views
0

てパラメータを渡す私はpowershell.exeスクリプトブロック内でその$BoxAlert$MailAlertを渡す方法たpowershell.exe

[CmdletBinding()] 
Param(
    [Parameter(Mandatory=$true)] 
    [Int32]$BoxAlert, 
    [Parameter(Mandatory=$true)] 
    [Int32]$MailAlert 
) 
) 

powershell.exe -WindowStyle Hidden { 
    if ($timeSpan.Days -ge $BoxAlert) { 
     drawPopupBox $result 
    } 
    if ($timeSpan.Days -ge $MailAlert) { 
     sendMail $result; 
    } 
} 

このコードを書かれていますか?

+1

PowerShellの内側たpowershell.exeを立ち上げるの目的は何であるにこのロジックを適用すると、次の出力

foo, bar 

を与えるのですか? Invoke-CommandまたはStart-Jobを使用しない理由 –

+0

PowerShellは非表示のウィンドウで呼び出されているので、コンソール出力を非表示/非表示にしようとしています。もしそうなら、 'Out-Null'や'> $ null 2>&1'を使う方がずっと簡単です。 –

+0

解決策として認識しているものではなく、解決しようとしている実際の問題を一歩踏み出して説明してください。このコードが実行されているはずのコンテキストは何ですか?なぜあなたは 'powershell.exe -WindowStyle Hidden'が必要だと思いますか?また、 'Param()'ブロックの後に偽の閉じ括弧があることに注意してください。 –

答えて

1

スクリプトブロックの後に-argsスイッチを追加するだけで、スクリプトブロック内にparam()定義が追加されます。簡易版は

$x = bar  
powershell.exe -command {param($x) write-host "foo, $x"} -args $x 

はあなたのコード

PowerShell.exe -WindowStyle Hidden -command { 
    param($BoxAlert, $MailAlert) 

    if($timeSpan.Days -ge $BoxAlert) 
    { 
     drawPopupBox $result 
    } 
    if($timeSpan.Days -ge $MailAlert) 
    { 
     sendMail $result; 
    } 

} -args $BoxAlert, $MailAlert 
+0

'[CmdletBinding()] のParam( [パラメータ(必須= $ TRUE)] [のInt32] $ BoxAlert、[パラメータ(必須= $ TRUE)] [のInt32] $ MailAlert ) たpowershell.exe -WindowStyle隠し{ \t PARAM($ BoxAlert、$ MailAlert) IF($ timeSpan.Days -ge $ BoxAlert) \t {\t \t drawPopupBox $結果 \t} \t場合($ timeSpan.Days -ge $ MailAlert) \t { \t \t sendMail $ result; \t} } -args $ BoxAlert、$ MailAlert' このようなコードを変更しました。変数に値を渡して、ifブロックがそれに応じて動作しています。 – Hardy

関連する問題