PowerShell ギャラリーへのスクリプト公開

PowerShell ギャラリーへのスクリプト公開

投稿者: Adam Bertram
投稿日: 2019年1月14 0 Comments

優れた PowerShell スクリプトを作成したら、それを他の人たちと共有すると、まったく新しい世界が開けます。スクリプトを PowerShell ギャラリーに公開することで、コミュニティへの貢献ができ、人から認められたいという欲求が満たされ、交流することで自らの PowerShell スキルの向上にもつながります。

PowerShell ギャラリーに公開されるのは PowerShell モジュールやソフトウェアパッケージが多いですが、昔ながらのPS1スクリプトを公開することもできます。

PowerShell ギャラリーにコンテンツを公開するのは誰にでもできますが、まずアカウントを設定する必要があります。アカウントを設定したら、次に自分に割り当てられた固有のAPIキーが必要になりますが、APIキーは、PowerShell ギャラリーの自分のプロファイルにアクセスして見つけることができます。

PowerShell Gallery API Key

PowerShell ギャラリー API キー

APIキーが確認できたら、準備完了です。公開するスクリプトが必要なので、わかりやすい例としてばからしいほど単純なスクリプトをアップロード用に作成しました。このスクリプトを adbtest.ps1 と呼ぶことにします。

param(
    [Parameter(Mandatory)]
    [ValidateNotNullOrEmpty()]
    [string]$Name
)

Write-Host $Name

スクリプトを公開するには、Publish-Script コマンドレットを使います。最もシンプルな場合、2つのパラメータ、スクリプトへのパスと NuGetApiKey パラメータとして定義されるAPIキーを指定します。

ですが、スクリプトをそのまま公開しようとすると、すぐに問題が発生します。

PS> Publish-Script -Path C:\adbtest.ps1 -NuGetApiKey 

NuGet.exe is required to continue
PowerShellGet requires NuGet.exe to publish an item to the NuGet-based repositories. NuGet.exe must be available in 'C:\ProgramData\Microsoft\Windows\PowerShell\PowerShellGet\' or 'C:\Users\abertram\AppData\Local\Microsoft\Windows\PowerShell\PowerShellGet\, or under one
 of the paths specified in PATH environment variable value. NuGet.exe can be downloaded from https://nuget.org/nuget.exe. Do you want PowerShellGet to install NuGet.exe now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y
9:01:33 AM : PSScriptInfo is not specified in the script file 'C:\adbtest.ps1'. You can use the Update-ScriptFileInfo with -Force or New-ScriptFileInfo cmdlet to add the PSScriptInfo to the script file.

PowerShell ギャラリーに公開するスクリプトには、事前にメタデータを追加しておく必要があります。このメタデータには、バージョン、作成者、GUIDなどが含まれます。必要な情報を追加するには、New-ScriptFileInfo コマンドを使用して新しいスクリプトを最初から作成するか、Update-ScriptFileInfo コマンドを使用して既存のスクリプトを更新します。Update-ScriptFileInfo コマンドによってスクリプトが変更されるかもしれない可能性を排除するために、筆者は常に新しいスクリプトを最初から作成するようにしています。

New-ScriptFileInfo コマンドを使って、新しく AdamsTestScript.ps1 というPS1スクリプトを作成して、前のスクリプトの内容をコピーしてこのスクリプトに貼り付けます。

PS> New-ScriptFileInfo -Path C:\AdamsTestScript.ps1 -Description 'This is a test description'
PS> Get-Content -Path 'C:\AdamsTestScript.ps1'

<#PSScriptInfo

.VERSION 1.0

.GUID 5611f619-12cf-4a85-863a-1b09f337e397

.AUTHOR abertram

.COMPANYNAME

.COPYRIGHT

.TAGS

.LICENSEURI

.PROJECTURI

.ICONURI

.EXTERNALMODULEDEPENDENCIES

.REQUIREDSCRIPTS

.EXTERNALSCRIPTDEPENDENCIES

.RELEASENOTES


#>

<#

.DESCRIPTION
 This is a test description

#>
param(
    [Parameter(Mandatory)]
    [ValidateNotNullOrEmpty()]
    [string]$Name
)

Write-Host $Name

これで本当にスクリプトを公開する準備が整ったので、もう一度、Publish-Script を実行します。

Publish-Script -Path C:\AdamsTestScript.ps1 -NuGetApiKey 

今度はエラーは返ってきません。スクリプトが実際に公開されたかどうかは、PS1拡張子なしの名前を入れて Find-Script コマンドを実行すれば確認できます。

PS> Find-Script -Name AdamsTestScript

Version    Name                                Repository           Description
-------    ----                                ----------           -----------
1.0        AdamsTestScript                     PSGallery            This is a test description

この時点で、誰にでも利用可能です。ギャラリーポータルからも見ることができます。

managing PowerShell Gallery Items

Managing PowerShell Gallery Items

Adam Bertram

Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.

コメント

Comments are disabled in preview mode.
トピック

Sitefinityトレーニングと認定を開始

クラス最高のSitefinityの機能を使って、魅力的なデジタル体験を提供する方法をエキスパートがお教えします。

さらに詳しく

より優れた業務アプリケーションやウェブサイトの開発に役立つ、ニュース、情報、チュートリアルをご案内します。

The specified form no longer exists or is currently unpublished.