我试图在powershell中编写一个小脚本,特别是使用交换。它只是要求发件人和/或收件人,然后根据指定的日期或最近30天的日期反馈跟踪日志。
我试图使用开关来检查哪些变量已完成,然后在变量中生成参数,然后将其传递给cmdlet,但是这会失败并且"位置参数不能是发现接受了论证"。
Manaully输入变量内容的命令完成,但使用变量本身甚至不在开关之外
Switch ($i) {
'1' {$x = "-Sender $sender -Start $date"}
'2' {$x = "-recipient $recipient -Start $date"}
'3' {$x = "-Sender $sender -Recipient $Recipient -Start $date"}
}
Get-MessageTrackingLog $x | Select timestamp, ServerHostName, Sender, recipients, MessageSubject, eventID, EventData | Out-GridView
这是脚本失败的部分。 $ i是一个根据
计算的变量if (!($sender)) {$i = $i}
else {$i = $i + 1}
if (!($recipient)) {$i = $i}
else {$i = $i + 2}
这可能不是最理想的解决方案,但工作正常。
我知道我可以让交换机运行整个命令,这样可行,但我试图避免这种情况,以便我可以根据需要添加到脚本中
答案 0 :(得分:0)
您需要使用invoke-expression
cmdlet调用它(iex
是别名):
iex "Get-MessageTrackingLog $x" | Select timestamp, ServerHostName, Sender, recipients, MessageSubject, eventID, EventData | Out-GridView