Как я могу сделать этот сценарий PowerShell в одну строку

Этот сценарий 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"

e.g.

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"`

Я пробовал заключить его в двойные кавычки, обратные кавычки и фигурные скобки, но пока безуспешно.


person NoseBagUK    schedule 08.06.2017    source источник
comment
Как насчет скобок?   -  person user4003407    schedule 08.06.2017
comment
Обратные кавычки - это escape-символы в PowerShell. Используйте подвыражения ($(...)) или просто разделяйте операторы точкой с запятой.   -  person Ansgar Wiechers    schedule 08.06.2017


Ответы (2)


Подвыражения должны это делать. Скобки вне подвыражений не требуются AFAIK.

$ () Оператор подвыражения

Возвращает результат одного или нескольких операторов. Для одного результата возвращает скаляр. Для нескольких результатов возвращает массив. соус: 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"
person G42    schedule 08.06.2017

Если вы хотите выполнить подвыражение, оберните его в $ ()

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"
person Adam Mnich    schedule 08.06.2017