【问题标题】:Using variables to pass arguments to a cmdlet in powershell使用变量将参数传递给 powershell 中的 cmdlet
【发布时间】:2015-03-04 23:10:20
【问题描述】:

我正在尝试在 powershell 中编写一个小脚本,特别是使用交换。它所做的只是询问发件人和/或收件人,然后根据指定日期或过去 30 天的日期反馈跟踪日志。

我正在尝试使用开关检查哪些变量已完成,然后在变量中生成参数,然后将其传递给 cmdlet,但这会失败并显示“找不到接受参数的位置参数” .

手动输入带有变量内容的命令完成,但使用变量本身甚至不在开关之外

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}

这可能不是最理想的解决方案,但效果很好。

我知道我可以让开关运行整个命令,这是可行的,但我试图避免这种情况,以便我可以根据需要添加到脚本中

【问题讨论】:

    标签: powershell exchange-server


    【解决方案1】:

    您需要使用 invoke-expression cmdlet 像这样调用它(iex 是别名):

    iex "Get-MessageTrackingLog $x" | Select timestamp, ServerHostName, Sender, recipients, MessageSubject, eventID, EventData | Out-GridView 
    

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 2012-08-02
      • 2021-03-22
      • 1970-01-01
      相关资源
      最近更新 更多