トレーニング
認定資格
Microsoft 認定: Power Automate RPA Developer Associate - Certifications
Microsoft Power Automate RPA Developer によるワークフローの改善と自動化の方法を示します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Azure DevOps Services
Azure Artifacts は、PowerShell スクリプトを共有するための便利なソリューションを提供します。 Azure Artifacts フィードを使用すると、コマンド ラインから PowerShell モジュールをシームレスに発行し、フィード設定を使用してそれらのモジュールへのアクセスを制御できます。 この記事では、PowerShell モジュールを格納および共有するためのプライベート PowerShell リポジトリとして Azure Artifacts フィードを設定する手順について説明します。
この記事では、次の方法について学習します。
新しいフィードを作成します (ない場合)。
PSResourceGet をインストールします。
SecretManagement モジュールと SecretStore モジュールをインストールします。
注意
PSResourceGet では、Azure Artifacts Credential Provider はサポートされていません。
個人用アクセス トークンはデジタル ID として機能し、Azure DevOps でユーザーを認証するための代替パスワードとして機能します。
Azure DevOps 組織に移動する https://dev.azure.com/<ORGANIZATION_NAME>/
ユーザー設定アイコンを選択 [個人アクセス トークン]を選択し、 [新しいトークン] を選択します。
PAT の名前を入力し、 Expiration 日付を設定し、 Custom defined を選択してから、 Packaging>Read、write & manage を選択します。
完了したら 作成 を選択し、PAT をコピーして安全な場所に保存してください。
独自のモジュールがない場合は、このセクションの手順に従って、サンプルの PowerShell モジュールを作成します。 それ以外の場合は、次の手順に進みます。
PowerShell-Demo新しいフォルダーを作成します。 フォルダーに移動し、PowerShell-Demo.psm1 新しいファイルを作成。
次のスクリプトを PowerShell-Demo.psm1 ファイルに貼り付けます。
Function PowerShell-Demo{
Write-Host "Hello World!"
}
PowerShell-Demo ディレクトリで次のコマンドを実行して、モジュール マニフェストを生成します。
New-ModuleManifest -Path .\PowerShell-Demo.psd1
PowerShell-Demo.psd1 ファイルを開き、RootModule
変数を見つけます。 この設定では、モジュールのインポート時に PowerShell によって読み込まれるメイン スクリプト ファイルを指定します。 空の文字列を、 PowerShell-Demo.psm1 ファイルへのパスに置き換えます。
RootModule = 'PowerShell-Demo.psm1'
FunctionsToExport
セクションでは、ユーザーがモジュールをインポートするときにアクセスできる関数を指定します。 PowerShell-Demo 関数を含めます。
FunctionsToExport = @('PowerShell-Demo')
FileList
セクションを見つけます。このセクションには、モジュールのパッケージ化時に含まれるファイルが一覧表示されます。 モジュールでパッケージ化するファイルを追加します。
FileList = @('./PowerShell-Demo.psm1')
次のコマンドを実行して、資格情報オブジェクトを作成します。 プレースホルダーを正しい情報に置き換えます。
$username = "<USER_NAME>"
$patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential($username, $patToken)
SecretManagement と SecretStore がインストールされていることを確認し、次のコマンドを実行してコンテナーを作成し、シークレットを追加します。
Register-SecretVault -Name "MySecretVault" -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Set-Secret -Name "MyCredential" -Secret $credentials -Vault "MySecretVault"
$CredentialInfo = [Microsoft.PowerShell.PSResourceGet.UtilClasses.PSCredentialInfo]::new('MySecretVault', 'MyCredential')
コンテナーとシークレットが正常に作成されたかどうかを確認するには、次のコマンドを実行してすべてのシークレットを一覧表示します。
PS > Get-SecretInfo
Name Type VaultName
---- ---- ---------
MyCredential PSCredential MySecretVault
次のコマンドを実行して、PowerShell リポジトリを登録します。 SourceLocation
リンクは、ソース URL の [Project setup>] セクションの [Artifacts>Connect to Feed> に移動することで確認できます。
プロジェクト スコープのフィード
Register-PSResourceRepository -Name "PowershellPSResourceRepository" `
-Uri "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" `
-Trusted `
-CredentialInfo $CredentialInfo
組織スコープのフィード:
Register-PSResourceRepository -Name "PowershellPSResourceRepository" `
-Uri "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" `
-Trusted `
-CredentialInfo $CredentialInfo
ヒント
一部のバージョンの PowerShell では、 Register-PSResourceRepository
コマンドレットを実行した後に新しいセッションを開始して、パッケージ ソースを解決するために Unable が発生しないようにする必要があります 警告。
リポジトリが正常に登録されたかどうかを確認するには、次のコマンドを実行して、現在のユーザーのすべての登録済みリポジトリを取得します。
Get-PSResourceRepository
注意
エラーが発生した場合: Response 状態コードが成功を示していません: 404 (Not Found).、ソース URL がnuget/v3/index.json
ではなくnuget/v2
を指していることを確認します。
次のコマンドを実行して、パッケージをフィードに発行します。
Publish-PSResource -Path <PACKAGE_PATH> -Repository <REPOSITORY_NAME> -ApiKey (Get-Secret <SECRET_NAME>)
例:
PS C:\AzureDevOps\Demos\PowerShellDemo> Publish-PSResource -Path .\scripts\ -Repository FabrikamFiberFeed -ApiKey (Get-Secret MyNewCredential) -verbose
VERBOSE: Performing the operation "Publish-PSResource" on target "Publish resource
'C:\AzureDevOps\Demos\PowerShellDemo\scripts\' from the machine".
VERBOSE: The newly created nuspec is:
C:\Users\xxxx\AppData\Local\Temp\xxxxxxxxx\PowerShell-Demo.nuspec
VERBOSE: credential successfully read from vault and set for repository: FabrikamFiberFeed
VERBOSE: Successfully packed the resource into a .nupkg
VERBOSE: Successfully published the resource to
'https://pkgs.dev.azure.com/ramiMSFTDevOps/DemoProject/_packaging/FabrikamFiberFeed/nuget/v3/index.json'
VERBOSE: Deleting temporary directory 'C:\Users\xxxx\AppData\Local\Temp\xxxxxxx'
モジュールがリポジトリで使用可能かどうかを確認するには、次のコマンドを使用してモジュールを検索します。
Find-PSResource -Name <RESOURCE_NAME> -Repository <REPOSITORY_NAME> -verbose
次のコマンドを実行して、モジュールの最新の安定バージョンをインストールします。
Install-PSResource <MODULE_NAME>
ヒント
"WriteObject". を呼び出す Exception というエラーが発生した場合は、新しい PowerShell ウィンドウを起動し、Get-SecretInfo
実行します。 SecretStore のタイムアウト期間が期限切れになる可能性Install-PSResourceを実行する前に、コンテナーのパスワードを入力します。 既定の PasswordTimeout は 900 秒ですが、必要に応じてこの値を変更できます。 詳細については、「 オートメーションで SecretStore を使用する 」を参照してください。
この記事では、次の方法について学習します。
新しいフィードを作成します (ない場合)。
Azure Artifacts Credential Provider をインストールします。
次のいずれかのオプションを使用して Windows MSBuild をインストールします。
NuGet(.exe) バージョン 4.8.0.5385 以降をインストールします。
dotnet runtime バージョン 8.0.x 以降をインストールしてください。
個人用アクセス トークンはデジタル ID として機能し、Azure DevOps でユーザーを認証するための代替パスワードとして機能します。
Azure DevOps 組織に移動する https://dev.azure.com/<ORGANIZATION_NAME>/
ユーザー設定アイコンを選択 [個人アクセス トークン]を選択し、 [新しいトークン] を選択します。
PAT の名前を入力し、 Expiration 日付を設定し、 Custom defined を選択してから、 Packaging>Read、write & manage を選択します。
完了したら 作成 を選択し、PAT をコピーして安全な場所に保存してください。
独自のモジュールがない場合は、このセクションの手順に従って、サンプルの PowerShell モジュールを作成します。 それ以外の場合は、次の手順に進みます。
Get-Hello新しいフォルダーを作成します。 フォルダーに移動し、Get-Hello.psm1 新しいファイル作成します。
次のスクリプトを Get-Hello.psm1 ファイルに貼り付けます。
Function Get-Hello{
Write-Host "Hello Azure DevOps!"
}
Get-Hello ディレクトリで次のコマンドを実行して、モジュール マニフェストを生成します。
New-ModuleManifest -Path .\Get-Hello.psd1
Get-Hello.psd1 ファイルを開き、RootModule
変数を見つけます。 この設定では、モジュールのインポート時に PowerShell によって読み込まれるメイン スクリプト ファイルを指定します。 空の文字列を、 Get-Hello.psm1 ファイルへのパスに置き換えます。
RootModule = 'Get-Hello.psm1'
FunctionsToExport
セクションでは、ユーザーがモジュールをインポートするときにアクセスできる関数を指定します。 Get-Hello 関数を含めます。
FunctionsToExport = @('Get-Hello')
FileList
セクションを見つけます。このセクションでは、モジュールのパッケージ化時に含まれるファイルを指定します。 モジュールでパッケージ化するファイルを追加します。
FileList = @('./Get-Hello.psm1')
モジュールの nuspec ファイルを生成します。 このコマンドは、モジュールをパックするために必要なメタデータを含む Get-Hello.nuspec ファイルを作成します。
nuget spec Get-Hello
次のコマンドを実行してモジュールをパッケージ化します。
nuget pack Get-Hello.nuspec
次のコマンドを実行して、フィードのソース URL を追加します。 NuGet V3 はサポートされていないため、フィード ソース URL で V2 を使用してください。
組織スコープのフィード:
nuget sources Add -Name "<FEED_NAME>" -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -username "<USER_NAME>" -password "<PERSONAL_ACCESS_TOKEN>"
プロジェクト スコープのフィード
nuget sources Add -Name "<FEED_NAME>" -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -username "<USER_NAME>" -password "<PERSONAL_ACCESS_TOKEN>"
フィードにパッケージを発行します。
nuget push -Source "<FEED_NAME>" -ApiKey "<ANY_STRING>" "<PACKAGE_PATH>"
重要
Module マニフェスト (.psd1) のバージョン番号は、.nuspec ファイルのバージョン番号と同じである必要があります。
このセクションでは、フィードを PowerShell リポジトリとして認証し、フィードでホストされているモジュールを使用する方法について説明します。
PowerShell プロンプト ウィンドウで、次のコマンドを実行して資格情報を設定します。 プレースホルダーを適切な情報に置き換えます。
$patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force
$credsAzureDevopsServices = New-Object System.Management.Automation.PSCredential("<USER_NAME>", $patToken)
PowerShell リポジトリを登録します。 SourceLocation
リンクは、ソース URL の [Project setup>] セクションの [Artifacts>Connect to Feed> に移動することで確認できます。
プロジェクト スコープのフィード
Register-PSRepository -Name <REPOSITORY_NAME> -SourceLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
組織スコープのフィード:
Register-PSRepository -Name <REPOSITORY_NAME> -SourceLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
ヒント
一部のバージョンの PowerShell では、 Register-PSRepository
コマンドレットを実行した後に新しいセッションを開始して、パッケージ ソースを解決するために Unable が発生しないようにする必要があります 警告。
パッケージ ソースを登録します。
プロジェクト スコープのフィード
Register-PackageSource -Name <REPOSITORY_NAME> -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
組織スコープのフィード:
Register-PackageSource -Name <REPOSITORY_NAME> -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
注意
リポジトリが正常に登録されたかどうかを確認するには、次のコマンドを実行して、現在のユーザーのすべての登録済みリポジトリを取得します。
Get-PSRepository
次のコマンドを実行して、 Get-Hello モジュールをインストールします。
Install-Module -Name <PACKAGE_NAME> -Repository <REPOSITORY_NAME>
注意
組織でファイアウォールまたはプロキシ サーバーを使用している場合は、 Azure Artifacts のドメイン URL と IP アドレスへのアクセスを許可していることを確認します。
この例では、Azure Artifacts フィードを使用して認証し、パイプラインから PowerShell モジュールをインストールする手順について説明します。 個人用アクセス トークンを使用するには、次のようにパイプライン変数として追加します。
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
Pipelinesを選択し、パイプライン定義を選択し、Edit を選択してパイプラインを変更します。
右上隅にある Variables を選択し、 New 変数を選択します。
変数の Name を入力し、個人用アクセス トークンを Value ボックスに貼り付けます。
[この値のシークレットを保持します] チェック ボックスをオンにします。 完了したら Ok を選択します。
userName の 2 番目の変数を追加します。 変数の Name を入力し、 Value ボックスに userName を入力します。
完了したら、 [保存] を選択します。
trigger:
- main
pool:
vmImage: 'Windows-latest'
variables:
PackageFeedEndpoint: 'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2' ## For organization scoped feeds use'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2'
steps:
- powershell: |
$pat = ConvertTo-SecureString ${env:pat_token} -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("${env:userName}", $pat)
Register-PSRepository -Name <REPOSITORY_NAME> -SourceLocation "$(PackageFeedEndpoint)" -InstallationPolicy Trusted -Credential $credential
displayName: 'Register PSRepository'
env:
pat_token: $patToken
userName: $userName
- powershell: |
nuget install <PACKAGE_NAME> -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json"
displayName: 'Install module'
トレーニング
認定資格
Microsoft 認定: Power Automate RPA Developer Associate - Certifications
Microsoft Power Automate RPA Developer によるワークフローの改善と自動化の方法を示します。
ドキュメント
PowerShell ギャラリーのパッケージを使用する - Azure Artifacts
PowerShell ギャラリーをアップストリーム ソースとして使用する方法