Добавление двух вариантов в скрипт Powershell - PullRequest
0 голосов
/ 04 октября 2018

Простите, я все еще изучаю PowerShell, так что это может быть глупый вопрос, но как мне добавить опции в .ps1?Например, в настоящее время у меня есть скрипт, который загружает файл и запускает его, но если он не может его запустить, он будет искать файл локально и затем запускать его.Как разделить эти два параметра, чтобы пользователь мог выбрать либо загрузить, либо просто запустить локально?Например: «./script.ps1 local» Будет искать файл локально и запускать его. «./script.ps1 external» загрузит файл и запустит его. Я не уверен, что функции подойдут для этого, потому что точкаскрипт не для импорта его в модули, я просто хочу, чтобы вы запускали .ps1.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Если вам нужно ограничить значения, передаваемые параметру, фиксированным набором значений , используйте атрибут параметра [ValidateSet(...)] :

[CmdletBinding()]
Param(
  [ValidateSet('Local', 'External')]
  [string] $Option = 'Local'
)

Switch ($Option)
{
   'local' { 
      # ...
      break
    }
   'external' { 
      # ... 
      break
   }
}

Вышеуказанные значения по умолчанию -Option (и, следовательно, переменная параметра $Option) равны 'Local', в то же время позволяя явно передать Local или External в -Option - другие значения не допускаются.

0 голосов
/ 04 октября 2018

Вверху вашего файла добавьте;

Param(
  [Parameter(Position=1)][string]$option
)

Switch ($option)
{
   'local' { RunLocal }
   'other' { RunOther }
   default { RunDefault }
}

будет выглядеть примерно так:

Param(
  [Parameter(Position=1)][string]$option
)

function RunLocal {
 Write-Host "RunLocal"
}

function RunOther {
 Write-Host "RunOther"
}

function RunDefault {
 Write-Host "RunDefault"
}

Switch ($option)
{
   'local' { RunLocal }
   'other' { RunOther }
   default { RunDefault }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...