【问题标题】:How can I make this PowerShell script into one line我怎样才能把这个 PowerShell 脚本变成一行
【发布时间】:2019-01-02 21:52:33
【问题描述】:

这个 PowerShell 脚本很好用,但我需要它是一个单行脚本,如何内联创建参数对象?

$action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}'
$trigger =  New-ScheduledTaskTrigger -Daily -At 9am
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Reset IIS" -Description "Daily Reset IIS"

例如

Register-ScheduledTask -Action `New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}'` -Trigger `New-ScheduledTaskTrigger -Daily -At 9am -TaskName "Reset IIS" -Description "Daily Reset IIS"`

我试过用双引号、反引号和花括号括起来,但到目前为止没有运气。

【问题讨论】:

  • 括号呢?
  • 反引号是 PowerShell 中的转义字符。使用子表达式 ($(...)) 或简单地用分号分隔语句。

标签: powershell powershell-5.0


【解决方案1】:

子表达式应该这样做。 AFAIK 不需要子表达式外的括号。

$( ) 子表达式运算符

返回一个或多个语句的结果。对于单个结果, 返回一个标量。对于多个结果,返回一个数组。 sauce: about_Operators

Register-ScheduledTask -Action $(New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}') -Trigger $(New-ScheduledTaskTrigger -Daily -At 9am)-TaskName "Reset IIS" -Description "Daily Reset IIS"

【讨论】:

    【解决方案2】:

    如果你想执行一个子表达式,用 $() 包裹它

    Register-ScheduledTask -Action $(New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument 'invoke-command -scriptblock {iisreset}') -Trigger $(New-ScheduledTaskTrigger -Daily -At 9am) -TaskName "Reset IIS" -Description "Daily Reset IIS"
    

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      相关资源
      最近更新 更多