Разное

Комментарии в скрипте powershell: основные возможности / Блог компании RUVDS.com / Хабр

Содержание

Управляем Exchange через PowerShell — «Хакер»

Подключаться к серверу Exchange и управлять почтой можно не только через почтовик, но и напрямую из PowerShell. Это позволяет писать самые разные скрипты — например, массово создавать ящики или переносить архивы. Посмотрим, как выглядит этот интерфейс.

Первым делом нужно установить сессию с сервером. Для этого используем следующий командлет:

С:> $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mx.mailserver.ru -Authentication Kerberos

Вместо http://mx.mailserver.ru указываем URI своего сервера (его можно глянуть в Exchange Admin Center в разделе «Серверы -> Виртуальные директории»). Теперь используем нашу сессию:

С:> Import-PSSession $session -DisableNameChecking

После этого можно начинать вводить команды Exchange Management Shell. К примеру, для того чтобы посмотреть, сколько места занимает каждая папка, выполним:

Get-MailboxFolderStatistics -Identity <user> -FolderScope All | select Name,ItemsInFolder,FolderSize

Поиск и удаление писем по теме и вложению:

Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery вложение:"archive. exe" -DeleteContent

Вывести ящики, которые не использовались за последние 120 дней:

Get-MailboxDatabase | Get-MailboxStatistics | where {$_.Lastlogontime -lt (get-date).AddDays(-120)} | Sort Lastlog

Экспортировать почтовый ящик в формате PST:

New-MailboxExportRequest -Mailbox "xakep" -Filepath "PCtempxakep.pst" -ContentFilter {(Received -gt "01/01/2017")}
New-MailboxExportRequest -Mailbox "xakep" -Filepath "PCtempxakep.pst"

Как видишь, разных команд и возможностей сколько угодно. Подробнее о них можешь почитать в официальном источнике, ну и не забывай про встроенную справку по синтаксису языка, она часто выручает.

Exchange Management Shell

Как установить программы с помощью CMD или Powershell

Установка приложений с помощью командлетов Powershell

Нерекомендуемый способ

Для примера установим браузер Chrome.
Пишем в командной строке повершела командлет Install-Package, потом через пробел параметры, а именно: название нашего приложения — googlechrome, потом ключ -ProviderName, которым мы явно зададим с какого репозитория скачивать совт и название репозитория chocolatey. В самом конце добавим 2 ключа: -Verbose и -force. Первый для того, что бы видеть процесс инсталляции, второй — для игнорирования запросов, например на перезапись файла.
В конечном итоге у вас должна получиться такая строка:

Install-Package googlechrome -ProviderName chocolatey -Verbose -force

Далее для установки другого приложения вам нужно только изменять названия пакета. Например, что бы установить архиватор WinRAR — нужно изменить googlechrome на winrar:

Install-Package winrar -ProviderName chocolatey -Verbose -force

Для того, что бы посмотреть, что вы там себе наустанавливали — нужно набрать командлет Get-Package без всяких параметров:

Get-Package

Он выведет на экран список всех установленных приложений.

Но Opera, Mozilla FireFox и ещё фигова туча приложений, которые есть в репозитории chocolatey, у вас не будут устанавливаться. Повершел ругнётся на неизвестный ему командлет, например на:

«Get-OSArchitectureWidth» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку

Более того, установить такое приложение другим способом, уже тоже не удастся. Система будет ругаться на то, что программа установлена. Поэтому, если вы столкнулись с такой ошибкой, обязательно наберите команду Uninstall-Package и название пакета, например:

Uninstall-Package opera

Короче, давайте срезюмируем. Данный метод имеет хоть и один, но очень серьёзный недостаток: несмотря на наличие приложения в репозитории — далеко не каждое может быть установлено. Выяснить это можно исключительно методом научного тыка.

Поэтому рекомендую использовать собственную утилиту проекта Chocolatey.

Установка приложений с помощью Chocolatey

Рекомендуемый способ

Репозиторий Chocolatey содержит постоянно обновляющуюся базу из более чем 5800 бесплатных и условно-бесплатных приложений.

Устанавливаем модуль Chocolatey. Он имеет свой синтаксис, зато приложения можно будет устанавливать, не только из повершела, но и из командной строки. Это делается всего одной командой:

iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))

Если ругнётся на:

Невозможно загрузить файл \chocolatey\chocInstall\tools\chocolateyInstall.ps1, так как выполнение сценариев отключено в этой системе.

То измените уровень безопасности командой выше.

Это всё что нужно сделать. Теперь вы можете устанавливать приложения, используя простейший синтаксис проекта Chocolatey.
Для полноценного управления установкой приложений нам потребуется 5 команд:

  • cinst название_пакета — установка приложения
  • cuninst название_пакета — удаление приложения
  • cup название_пакета — обновление приложения
  • cup all — обновление всех установленных приложений
  • clist название_пакета — поиск приложений

Например, для установки браузера Opera — запустим экземпляр командной строки CMD или PowerShell от имени Администратора. В адресную строку введём название команды cinst, название приложения opera и пару параметров:

cinst opera ––force ‑y

Параметр ‑‑force — будет игнорировать все ошибки, а так-же используется для принудительной переустановки приложения.
Ключ ‑y — будет отвечать на все вопросы скриптов, установщика и системы утвердительно.

Для удаления — набирайте cuninst, название программы и ключ -y, например:

cuninst opera -y

А как же искать приложения? Для примера узнаем какое название имеет в каталоге Chocolatey десктопный Telegram. Для этого пишем команду clist и через пробел предполагаемое название пакета:

clist telegram

Как правило, первая же строчка и будет названием пакета с указанием её текущей версии в каталоге.

По такому же принципу, вы можете обновлять приложения. Команды для обновления сразу всех программ или по отдельности были чуть выше.

Как то так.

Вывод уведомлений пользователям с помощью PowerShell

Несмотря на то, что PowerShell консольный язык, иногда необходимо из скрипта PowerShell оповестить пользователя об определенном событии или необходимости выполнить определенное действие. Например, вывести уведомление о завершении какого-либо длительного PoSh скрипта, или об наступлении какого-то важного события.

Самый простой способ вывести окошко с произвольным тестом через подсистему сценариев Windows – Wscript.

Следующий код выведет обычное текстовое окно с необходимым текстом и кнопкой OK.

$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("Скрипт формирования отчета выполнен")

С помощью различных свойств метода Popup вы можете настроить вид модального окна сообщения. В том числе можно вернуть в скрипт результаты ответа пользователя на вопрос (Да / Нет).

$Output = $wshell.Popup("Скрипт формирования отчета завершен! Хотите вывести его на экран?",0,"Отчет готов",4+32)

Общий синтаксис и параметры метода Popup:

Popup(<Text>,<SecondsToWait>,<Title>,<Type>)

Параметры:

  • <Text> — строка, текст сообщения.
  • <SecondsToWait> — необязательный, число. Количество секунд, по истечении которого окно будет автоматически закрыто.
  • <Title> — необязательный, строка. Текст заголовка окна сообщения.
  • <Type> — необязательный, число. Комбинация флагов, определяет тип кнопок и значка. Возможные значения флагов:
    • 0 — кнопка ОК.
    • 1 — кнопки ОК и Отмена.
    • 2 — кнопки Стоп, Повтор, Пропустить.
    • 3 — кнопки Да, Нет, Отмена.
    • 4 — кнопки Да и Нет.
    • 5 — кнопки Повтор и Отмена.
    • 16 — значок Stop.
    • 32 — значок Question.
    • 48 — значок Exclamation.
    • 64 — значок Information.

Описание: возвращает целое значение, с помощью которого можно узнать, какая кнопка была нажата пользователем. Возможные значения:

  • -1 — таймаут.
  • 1 — кнопка ОК.
  • 2 — кнопка Отмена.
  • 3 — кнопка Стоп.
  • 4 — кнопка Повтор.
  • 5 — кнопка Пропустить.
  • 6 — кнопка Да.
  • 7 — кнопка Нет.

Более привлекательные и приятные взгляду всплывающие сообщения (ballons) можно вывести в Windows 7, 8.1 и 10 через API Windows Forms. Следующий PowerShell код выведет всплывающее сообщение рядом с панелью уведомлений Windows 10, которое автоматически исчезнет через 10 секунд.

Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = 'Это текст всплывающего сообщения для пользователя Windows 10'
$balmsg.BalloonTipTitle = "Внимание $Env:USERNAME"
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(10000)

Кроме того для создания красочных всплывающих сообщений в Windows 10 (PowerShell 5.0+)можно использовать отдельный PowerShell модуль BurntToast из галереи PowerShell.

Модуль устанавливается из онлайн репозитория с помощью менеджера пакетов Windows 10:
Install-Module -Name BurntToast

Теперь, например, в ранее рассматриваемый скрипт автоматического отключение от Wi-FI сети при подключении к Ethernet можно добавить красочное уведомление:

New-BurntToastNotification -Text "Отключение от Wi-Fi сети", "Вы были отключены от Wi-Fi сети, т. к. Вше устройство было подключено к скоростному Ethernet подключению." -AppLogo C:\PS\changenetwork.png

Итак, теперь вы знаете как вывести уведомление пользователя через PowerShell. Если у пользователя есть динамики, можно даже сыграть ему мелодию:

[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(698,350)
[console]::beep(523,150)
[console]::beep(415,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,125)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(440,125)
[console]::beep(523,500)
[console]::beep(440,375)
[console]::beep(523,125)
[console]::beep(659,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,250)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(523,125)
[console]::beep(440,500)
[console]::beep(349,375)
[console]::beep(261,125)
[console]::beep(440,1000)

Добавьте отличные комментарии к вашему сценарию PowerShell

Перейти к основному содержанию Microsoft

Scripting

Scripting

Scripting

  • Home
  • DevBlogs
  • Product Blogs
  • DevOps
  • Языки
  • . NET
  • Разработка платформы
  • Data Development
  • Еще

    Комментарии PowerShell: укажите контекст сценария

    Код PowerShell говорит вам, как, но комментарии PowerShell говорят вам, почему. Вот способы прокомментировать вашу PowerShell и некоторые сопутствующие передовые практики.

    Загадочный код

    Вот вам слишком знакомый сценарий: вы с опущенными головами пишете отличный сценарий. Поскольку вы его пишете, вы точно знаете, как это работает и почему вы приняли дизайнерские решения, которые приняли. Ты такой умный! Код настолько очевиден, что в значительной степени объясняет себя тому, кто его читает.

    Вот как обычно обстоит дело в реальности: партнеру необходимо внести изменения в ваш сценарий.Они задаются вопросом, что представляет собой имя переменной $ m. Они пытаются отследить ход вашего скрипта, постоянно просматривая созданное вами определение функции. Почему вы создали для этого специальную функцию? Разве это нельзя сделать с помощью командлета <вставьте имя применимого командлета сюда>? Каковы предварительные условия для запуска этого кода? Требуется ли минимальный уровень версии PowerShell? И вопросы можно продолжать и продолжать.

    Даже если вы, как автор, вернетесь, чтобы просмотреть его через несколько месяцев, сможете ли вы надежно вспомнить логику, которую вы использовали для его разработки и написания?

    Добавление комментариев улучшает понимание сценария

    Хороший комментарий:

    • Объясняет логику работы скрипта .Например, если данные возвращаются в определенном формате и перед использованием их необходимо обработать, объясните эту логику в комментарии. Сюда входит логика бизнес-правил.
    • Разрешить предсказуемые изменения в будущем . Если вы понимаете требования к логике при создании сценария, вам будет легче понять изменения, необходимые при изменении этих требований к логике.
    • Упростите устранение неисправностей в будущем . Опять же, понимание логики позволит человеку легче находить ошибки в логике и исправлять их.

    Добавить однострочный комментарий PowerShell

    Добавить однострочный комментарий в PowerShell очень просто. Начните строку с # , за которым следует текст комментария. В PowerShell ISE он будет выделен зеленым цветом.

    # Это однострочный комментарий.
    # Это еще один однострочный комментарий.

    # Это однострочный комментарий.

    # Это еще один однострочный комментарий.

    Если вам нужно включить более длинный комментарий, вы бы предпочли отобразить его как читаемый абзац. Вы можете использовать кучу однострочных комментариев, но вам придется вручную корректировать текст комментария, и он не будет хорошо читаться из-за # в начале каждой строки. Взгляните на следующий пример:

    # Правило бизнес-логики
    # Эта конкретная функция взята из политики и номера процедуры нашей компании.
    №24, раздел 2.Все учетные записи пользователей, которые не вошли на компьютер в
    # 90 дней должны быть автоматически отключены, а уведомление по электронной почте отправлено руководителю ИТ
    # Безопасность, информирующая их о предпринятых действиях.

    # Правило бизнес-логики

    # Эта конкретная функция получена из политики и процедуры нашей компании номер

    # 24, раздел 2. Все учетные записи пользователей, которые не вошли в систему в течение

    # 90 дней должен быть отключен автоматически, а на электронную почту руководителя службы безопасности

    # Security будет отправлено уведомление о предпринятых действиях.

    Читается, но можно оптимизировать. Кроме того, если у вас есть куча подобных комментариев, вам придется проделать большую дополнительную прокрутку. Как удобочитаемость, так и раздувание при прокрутке можно решить с помощью многострочного комментария.

    Добавить многострочный комментарий PowerShell

    Добавить многострочный комментарий в PowerShell почти так же просто. На этот раз требуются два тега: открывающий тег комментария <# и закрывающий тег комментария #> . Он также будет выделен зеленым цветом.

    <# Правило бизнес-логики Эта конкретная функция получена из номера политики и процедуры нашей компании. 24, раздел 2. Все учетные записи пользователей, которые не вошли на компьютер в 90 дней должны быть автоматически отключены, а уведомление по электронной почте отправлено руководителю ИТ. Безопасность информирует их о предпринятых действиях. #>

    <#

    Правило бизнес-логики

    Эта конкретная функция получена из политики и процедуры нашей компании номер

    24, раздел 2.Все учетные записи пользователей, которые не вошли в систему в течение

    90 дней, должны быть автоматически отключены, а уведомление по электронной почте должно быть отправлено руководителю ИТ-отдела

    Security, информируя их о предпринятых действиях.

    #>

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

    Комментарии к передовому опыту

    Неправильное использование или злоупотребление функцией комментариев может негативно повлиять на понимание вашего сценария.Вот несколько рекомендуемых правил, которые следует учитывать при принятии решения о добавлении комментария:

    • Не добавляйте комментарий, чтобы объяснить базовые знания PowerShell , которые вероятный рецензент уже знает.
    • Комментарий должен объяснять реализуемую логику , особенно если она уникальна или связана с бизнес-правилом.
    • Комментарии должны быть как можно ближе к описываемому коду .
    • Избегайте сложного форматирования комментариев .Чем больше правил форматирования вы пытаетесь применить, тем меньше вероятность, что они будут соблюдаться, и в целом может помешать комментированию.
    • Не включайте избыточную информацию . Например, если вы проверяете свой код в системе контроля версий, самому скрипту не требуется история изменений.
    • Сначала код документа, а последний комментарий . Например, используйте описательные имена переменных и функций, чтобы помочь читателю понять, что происходит в игре.

    Идите и прокомментируйте

    Теперь, когда вы знаете основы комментирования, приложите особые усилия, чтобы включить их в свою повседневную практику кодирования.Вы будете рады, когда вернетесь к этому коду через год!

    Галерея PowerShell 101 — Технические мысли

    Microsoft заявляет:

    Галерея PowerShell — это центральный репозиторий для содержимого PowerShell. Вы можете найти новые команды PowerShell или ресурсы конфигурации желаемого состояния (DSC) в галерее.

    Подождите секунду, разве это не похоже на Microsoft Script Center? Да. Оба они служат репозиторием с возможностью поиска для сценариев и модулей на языке сценариев PowerShell.Однако галерея PowerShell предлагает несколько совершенно разных возможностей. Во-первых, все скрипты и модули взаимодействуют с, как вы уже догадались, через консоль PowerShell. Хотя вы можете выполнять поиск в веб-галерее, все остальные действия: загрузка, установка и публикация скриптов и модулей PowerShell выполняются из PowerShell. Веб-платформа Microsoft Script Center остается отличным ресурсом для сценариев системных администраторов и других ИТ-специалистов.В галерее PowerShell гораздо больше ощущений от DevOps (y), и на сегодняшний день у нее есть база репозиториев, которая больше отражает эту работу.

    По мере развития галереи PowerShell и Центра сценариев, вероятно, будет какое-то пересечение между ними. Однако способность галереи PowerShell быстро искать, устанавливать и легко обновлять (в чем Script Center не справлялся) скрипты и модули, скорее всего, сделает ее предпочтительным хранилищем в будущем.

    Все, что требуется, — это модуль PowerShellGet и поставщик NuGet (менеджер пакетов)

    По сути, если у вас Windows 10, вы, скорее всего, в порядке. Вы можете подтвердить, что используете последнюю версию Windows Management Framework, выполнив следующую команду:

    PS C: \> $ PSVersionTable. PSVersion
    Основная малая редакция сборки
    ----- ----- ----- --------
    5 0 10586 117
     

    Если нет, вам потребуется: Windows Management Framework 5.0

    Или для тех из вас, кто все еще использует PowerShell 3 или 4, вам потребуется установщик MSI: MSI — PackageManagement PowerShell Modules Preview

    После того, как вы установили нужную версию, вы потребуется быстрая перезагрузка, и тогда у вас будет доступ к модулю PowerShellGet:

    PS C: \> Get-Module | выберите Имя, Версия | ft -AutoSize
    Название Версия
    ---- -------
    ISE 1.0,0.0
    Microsoft.PowerShell.Management 3.1.0.0
    Microsoft.PowerShell.Utility 3.1.0.0
    PackageManagement 1.0.0.1
    PowerShellGet 1.0.0.1
     

    Далее вам понадобится поставщик NuGet. Следующий код проверит вашу систему на наличие этого и, если он не найден, установит его для вас:

    # установить NuGet, если он еще не установлен
    $ testNuGet = $ null
    $ nuGet = Get-PackageProvider | Select-Object -ExpandProperty Name
    foreach ($ result in $ nuGet) {
     if ($ result -eq "NuGet") {
     $ testNuGet = $ true
     }
    }
    if ($ testNuGet -eq $ true) {
     Write-Host «NuGet уже установлен» -ForegroundColor Magenta
    }
    else {
     Установить-PackageProvider -Name NuGet -Force
    }
     

    Обновление PowerShell Получить справку

    В качестве первого шага я рекомендую получить обновленную справочную информацию для вашего нового модуля. Он содержит множество командлетов, с которыми вы, вероятно, не знакомы, и вам понадобится доступ к этой информации!

    # получить обновленную справку
    Обновление-Справка -Модуль PowerShellGet
     

    Поиск первого скрипта галереи PowerShell

    Find-Script и Find-Module

    Допустим, вы хотели найти сценарии, связанные с Hyper-V:

    Найти-Модуль-Репозиторий PSGallery-Тег Hyper-V | эт
    Найти-Модуль-Репозиторий PSGallery -Фильтр Hyper-V | эт
     

    Авторы сценариев могут предоставлять описания и теги своих сценариев.Я не уверен на 100%, но считаю, что параметр фильтра больше относится к описанию скрипта / модуля, тогда как тег фокусируется только на тегах.

    Этот пример вернул один результат:

    Имя: Diag-V
    Версия: 2.0
    Тип: Модуль
    Описание: Diag-V - это набор модулей PowerShell, в первую очередь диагностических функций Hyper-V, а также
     несколько функций диагностики Windows, полезных при взаимодействии с серверами Hyper-V. 
     
     С помощью импортированного модуля диагностику можно запустить с помощью желаемого имени функции, либо
     Diag-V также может представлять собой простое меню выбора, которое позволяет просматривать через консоль все
     диагностика и выполнение желаемого выбора.Автор: Джейк Моррисон
    Название компании: jakewmorrison
    Авторское право: (c) 2017-2018 Джейкоб Моррисон. Все права защищены.
    Дата публикации: 11.12.17, 03:38:31
    Дата установки:
    Дата обновления:
    LicenseUri:
    ProjectUri: https://github.com/techoughtts2/Diag-V
    IconUri:
    Теги: {Hyper-V, Diag-V, Диагностика, Тесты ...}
    Включает: {Function, RoleCapability, Command, DscResource ...}
    PowerShellGetFormatVersion:
    ReleaseNotes: Полная перезапись оригинальной версии скрипта. Преобразованный Diag-V из сценария ps1 PowerShell
     в полностью поддерживаемый модуль PowerShell.Переработаны все диагностические функции: Улучшена ошибка.
     контроль, Общие исправления ошибок, Лучшая читаемость, Добавлена ​​новая функция парсера журнала Hyper-V
    Зависимости: {}
    RepositorySourceLocation: https://www. powershellgallery.com/api/v2/
    Репозиторий: PSGallery
    PackageManagementProvider: NuGet
     

    Тестирование и проверка сценария или модуля

    Как и в случае со всеми репозиториями, не время просто запускать только что обнаруженный сценарий Hyper-V. Если у автора есть какая-либо информация о веб-сайте, вы можете сначала проверить ее, чтобы убедиться, что сценарий делает то, что вы ожидаете.Вы также должны сохранить сценарий и проверить код, чтобы убедиться, что он соответствует вашим целям. Следующие два командлета позволяют сохранить (не установить) сценарий для дальнейшего просмотра.

    Сохранить сценарий и модуль сохранения

    Save-Module -Name Diag-V -Repository PSGallery -Path "C: \ TestScripts"
     

    Загрузка и установка сценария или модуля из галереи PowerShell

    После того, как вы удовлетворены содержимым сценария / модуля, пора загрузить и установить его.

    Сценарий установки и модуль установки

    Install-Module-Name "Diag-V" -Repository PSGallery
     

    Этот скрипт / модуль теперь будет доступен вам на устройстве, на котором вы его установили.

    Проверка того, какие сценарии и модули вы установили из галереи PowerShell

    Get-InstalledScript и Get-InstalledModule

    Поддержание актуальности сценариев и модулей из галереи PowerShell

    Это то, что действительно приятно, возможность легко обновлять скрипт, чтобы воспользоваться последними улучшениями!

    Сценарий обновления и модуль обновления

    Обновление-модуль-имя "Diag-V"
     

    В качестве первого шага вам необходимо зарегистрироваться в качестве пользователя на веб-сайте PowerShell Gallery — это быстрый и простой процесс, особенно если у вас уже есть учетная запись Microsoft.

    Вооружившись логином, вы сможете нажать на свое имя пользователя, после чего вы попадете на страницу, содержащую ваш ключ API. Этот ключ API необходим для публикации скриптов или модулей в галерее PowerShell.

    Вход в галерею PowerShell

    Получив ключ API, вы готовы опубликовать свой скрипт или модуль.

    Не забудьте также ознакомиться с рекомендациями и рекомендациями по публикации PowerShellGallery

    Публикация модулей в PS Gallery

    Публикация модулей относительно проста. Модуль просто необходимо установить на текущий компьютер, с которого вы хотите публиковать.

    С установленным модулем вы просто используете:

    Publish-Module

    Публикация-Модуль-Имя "Диаг-В" `
     -NuGetApiKey "ваш ключ API идет сюда"
     -Репозиторий PSGallery
     

    Затем вы можете посетить свою страницу галереи PowerShell и настроить синопсис и описание.

    Публикация скриптов в галерее PS

    Публикация скриптов в галерее PowerShell немного сложнее.

    New-ScriptFileInfo и Test-ScriptFileInfo и Publish-Script

    Чтобы опубликовать сценарий / модуль, вам необходимо создать очень специфический синтаксис справки по галерее PowerShell. Я обнаружил, что это самая сложная часть процесса, так как размещение и интервалы между этим блоком кода казались очень деликатными, и потребовалось немного повозиться с Test-ScriptFileInfo, прежде чем я понял это правильно.

    <#PSScriptInfo
    .ВЕРСИЯ 1.0
    .GUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    . АВТОР
     Джейк Моррисон - TechThoughts - https://techoughtts.info
    .НАЗВАНИЕ КОМПАНИИ
     TechThoughts
    .АВТОРСКИЕ ПРАВА
     Джейк Моррисон - пожалуйста, укажите TechThoughts - https://techoughtts.info, если использовался
    .TAGS
     Hyper-V, Diag-V, диагностика, диагностика Hyper-V, тесты, виртуальные машины, виртуальные машины, VHD, VHD, VHDX, VHDX, CSV
    .LICENSEURI
    .PROJECTURI
    .ICONURI
    .RELEASENOTES
     Первоначальный выпуск - дополнительная информация об этом сценарии и видеодемо по адресу: https://techoughtts.info/diag-v/
    #>
     

    Я предлагаю начать с New-ScriptFileInfo, который просто сгенерирует блок справки PowerShell Gallery во временный файл.Оттуда вы можете отредактировать его, а затем поместить в свой скрипт.

    New-ScriptFileInfo -Path "C: \ PSFiles \ PSGalleryHelpCode.ps1" -Verbose
     

    Получив новый файл, вы можете отредактировать его и скопировать в свой сценарий, который вы хотите опубликовать (см. Пример выше).

    Вы обязательно захотите использовать командлет Test-ScriptFileInfo, чтобы убедиться, что все работает должным образом, иначе вы не сможете загрузить.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *