Должны ли скрипты PowerShell вызываться одной строкой? - PullRequest
8 голосов
/ 13 января 2010

У меня есть несколько скриптов PowerShell, которые принимают много длинных параметров, например,

myScript.ps1 -completePathToFile "C:\...\...\...\file.txt" -completePathForOutput "C:\...\...\...\output.log" -recipients ("me@me.com") -etc.

Я не могу заставить PowerShell запускать такие сценарии, если все параметры не указаны в одной строке. Есть ли способ вызвать скрипт более похожим на это?

myScript.ps1
  -completePathToFile "C:\...\...\...\file.txt"
  -completePathForOutput "C:\...\...\...\output.log"
  -recipients (
    "me@me.com",
    "him@him.com"
   )
  -etc

Отсутствие читабельности сводит меня с ума, но сценарии действительно должны быть такими параметрическими.

1 Ответ

13 голосов
/ 13 января 2010

PowerShell считает, что команда выполнена в конце строки, если она не видит определенные символы, такие как труба, открытая скобка или открытая фигурная буква. Просто поместите символ продолжения строки `` `в конце каждой строки, но убедитесь, что после этого символа продолжения нет пробелов:

myScript.ps1 `
  -completePathToFile "C:\...\...\...\file.txt" `
  -completePathForOutput "C:\...\...\...\output.log" `
  -recipients (
    "me@me.com", `
    "him@him.com" `
   ) 

Если вы используете PowerShell 2.0, вы также можете поместить эти параметры в хеш-таблицу и использовать сплаттинг, например:

$parms = @{
    CompletePathToFile   = 'C:\...\...\...\file.txt'
    CompletPathForOutput = 'C:\...\...\...\output.log'
    Recipients           = 'me@me.com','him@him.com'
}
myScript.ps1 @parms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...