2017-03-07 140 views
0

我写了这个代码传递参数通过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; 
    } 
} 

如何传递$BoxAlert$MailAlertpowershell.exe脚本块里面?

+1

什么是启动PowerShell.exe内的PowerShell的目的是什么?为什么不调用命令或开始工作? –

+0

由于PowerShell被隐藏窗口调用,我认为这是试图隐藏/抑制控制台输出。如果是这样,使用'Out-Null'或'> $ null 2>&1'将是一个更简单的解决方案。 –

+0

请退后一步,描述您尝试解决的实际问题,而不是您认为的解决方案。这段代码应该在什么情况下运行?为什么你认为你需要'powershell.exe -WindowStyle Hidden'?另外请注意,在你的'Param()'块后面有一个虚假的右括号。 –

回答

1

只需在脚本块和param()定义包含您的脚本块之后添加-args开关。一个简单的版本是

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

提供了以下输出

foo, bar 

运用这一逻辑代码

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()] 参数( [参数(强制性= $真)] [的Int32] $ BoxAlert,[参数(强制性= $真)] [的Int32] $ MailAlert ) PowerShell.exe -WindowStyle隐藏{ \t PARAM($ BoxAlert,$ MailAlert) 如果($ 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