Часто ли вам приходится запускать исполняемые файлы с десятком-другим параметров? Например:
Начнем с того, что PowerShell предлагает различные способы запуска исполняемых файлов, такие как:
Видите? Всё просто! А если список параметров собрать, используя знакомый любому .NET разработчику класс List<T>, то и код будет понятен любому коллеге (я надеюсь):
Да, интеграция со всей платформой .NET Framework - это неоспоримый плюс PowerShell-скриптов! По сравнению с первоначальным вариантом, читабельность и легкость сопровождения повысились в разы! На этом я заканчиваю пятиминутку в стиле Капитана Очевидность, и желаю всем поменьше рутины и побольше интересных задач!
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" ^ -source:package='long\way\to\package\foo.zip' ^Если мне предстоит запустить подобного монстра более 2 раз за всю свою жизнь, я пишу скрипт на PowerShell, который сформирует список параметров, соединит список в результирующую строку, выполнит команду, да и еще поделится со со мной полезной отладочной информацией. Будь то шаг развертывания приложения через билд-сервер, запуск какой-либо тестовой утилиты - подобный подход в сочетании с системой управления версиями снижает сложность разработки и поддержки на порядки.
-dest:auto,computerName="https://another-app.scm.azurewebsites.net/msdeploy.axd?site=aaa",userName="bbb",password="ccc7",authtype="basic",includeAcls="False" ^
-verb:sync ^
-setParamFile:"long\way\to\package\foo.SetParameters.xml" ^
-AllowUntrusted ^
-setParam:"IIS Web Application Name"=homesweethome ^
-verbose
Начнем с того, что PowerShell предлагает различные способы запуска исполняемых файлов, такие как:
- оператор &
- Start-Process
- Invoke-Expression
- Start-Executable
Start-Process $msdeploy_exe -ArgumentList $params -NoNewWindow -Wait
Видите? Всё просто! А если список параметров собрать, используя знакомый любому .NET разработчику класс List<T>, то и код будет понятен любому коллеге (я надеюсь):
$list = New-Object -TypeName "System.Collections.Generic.List[string]" $dest_template = '-dest:auto,computerName="https://{0}.scm.azurewebsites.net/msdeploy.axd?site={0}",userName="aaa",password="bbb",authtype="basic",includeAcls="False"' $list.Add([string]::Format($dest_template, $web_url)) $list.Add([string]::Format("-source:package={0}", $package_path)) $list.Add([string]::Format("-setParamFile:{0}", $setparameters_path)) $list.Add([string]::Format("-setParam:'IIS Web Application Name'={0}", $web_url)) $list.Add("-verbose") $list.Add("-verb:sync") $list.Add("-AllowUntrusted") # ensure space between params $params = [string]::Join(" ", $list)
Да, интеграция со всей платформой .NET Framework - это неоспоримый плюс PowerShell-скриптов! По сравнению с первоначальным вариантом, читабельность и легкость сопровождения повысились в разы! На этом я заканчиваю пятиминутку в стиле Капитана Очевидность, и желаю всем поменьше рутины и побольше интересных задач!
Комментариев нет:
Отправить комментарий