Een Azure Artifacts-feed gebruiken als een persoonlijke PowerShell-opslagplaats
Azure DevOps Services
Azure Artifacts biedt een eenvoudige manier om PowerShell-scripts te delen tussen teams om samenwerking te bevorderen en de effectiviteit te maximaliseren. Door PowerShell-modules op te slaan in een privéopslagplaats, kunt u leden van uw team de mogelijkheid geven om deze scripts snel te downloaden of bij te werken met behulp van de opdrachtregel.
In dit artikel wordt u begeleid bij het instellen van uw Azure Artifacts-feed als een persoonlijke PowerShell-opslagplaats om uw PowerShell-modules op te slaan en te delen. U leert het volgende:
- Een persoonlijk toegangstoken maken
- Een nieuwe feed maken om PowerShell-modules op te slaan
- PowerShell-modules maken, verpakken en publiceren
- Verbinding maken naar een feed met PowerShell
- De persoonlijke PowerShell-opslagplaats gebruiken met Azure Pipelines
Vereisten
- NuGet.exe
- Referentieprovider voor Azure Artifacts
- een Azure DevOps-organisatie. Maak een organisatie als u er nog geen hebt.
- Een Azure Artifacts-feed. Maak een nieuwe feed als u er nog geen hebt.
Een persoonlijk toegangstoken maken
Het gebruik van een persoonlijk toegangstoken (PAT) is een uitstekende manier om te verifiëren met Azure DevOps zonder uw primaire referenties te gebruiken. Zie Persoonlijke toegangstokens gebruiken voor meer informatie.
Navigeer naar uw Azure DevOps-organisatie
https://dev.azure.com/<ORGANIZATION_NAME>/
Selecteer het pictogram gebruikersinstellingen en selecteer vervolgens Persoonlijke toegangstokens.
Nieuw token selecteren
Voer een naam in voor uw PAT en kies vervolgens een vervaldatum .
Selecteer Aangepast gedefinieerd en selecteer vervolgens Verpakking>lezen, schrijven en beheren.
Selecteer Maken wanneer u klaar bent. Kopieer en bewaar uw PAT op een veilige locatie.
Een module maken
Maak een nieuwe map Get-Hello. Navigeer in uw map en maak een nieuw bestand Get-Hello.psm1.
|--- Get-Hello // Parent folder |--- Get-Hello.psm1 // This will become our PowerShell Module |--- Get-Hello.psd1 // This will become our module manifest
Plak het volgende script in uw Get-Hello.psm1-bestand :
Function Get-Hello{ Write-Host "Hello from my Azure DevOps Services Package." }
Maak het modulemanifest door de volgende opdracht uit te voeren in het mappad Get-Hello .
New-ModuleManifest -Path .\Get-Hello.psd1
Open het bestand Get-Hello.psd1 en zoek de
RootModule
variabele. Vervang de lege tekenreeks door het pad naar uw Get-Hello.psm1-bestand als volgt:RootModule = 'Get-Hello.psm1'
De
FunctionsToExport
sectie is bedoeld om de lijst met functies te definiëren die uit deze module worden geëxporteerd. Voeg de functie Get-Hello als volgt toe:FunctionsToExport = @('Get-Hello')
Zoek de
FileList
sectie en voeg de volgende lijst met bestanden toe die moeten worden verpakt met uw module.FileList = @('./Get-Hello.psm1')
Module inpakken en publiceren
Maak nuspec-bestand voor uw module. Met deze opdracht maakt u een Get-Hello.nuspec-bestand met metagegevens die nodig zijn om de module in te pakken.
nuget spec Get-Hello
Voer de volgende opdracht uit om uw module in te pakken.
nuget pack Get-Hello.nuspec
Voer de volgende opdracht uit om de url van de feedbron toe te voegen. NuGet v3 wordt niet ondersteund. Zorg ervoor dat u v2 gebruikt in de bron-URL van uw feed.
Feed met organisatiebereik:
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>"
Feed met projectbereik:
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>"
Publiceer het pakket naar uw feed.
nuget push -Source "<FEED_NAME>" -ApiKey "<ANY_STRING>" "<PACKAGE_PATH>"
Belangrijk
Het versienummer in het modulemanifest (.psd1) en het .nuspec-bestand moeten overeenkomen.
Verbinding maken als PowerShell-opslagplaats
Open een PowerShell-promptvenster met verhoogde bevoegdheid.
Stel uw referenties in voor verificatie met Azure Artifacts. Vervang de tijdelijke aanduidingen door de juiste informatie.
$patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force
$credsAzureDevopsServices = New-Object System.Management.Automation.PSCredential("<USER_NAME>", $patToken)
Registreer uw PowerShell-opslagplaats. De
SourceLocation
koppeling vindt u door naar Artefacten> te navigeren Verbinding maken om NuGet.exe in te voeren>onder de bron-URL van de installatie van Project.Feed met projectbereik:
Register-PSRepository -Name "PowershellAzureDevopsServices" -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
Feed met organisatiebereik:
Register-PSRepository -Name "PowershellAzureDevopsServices" -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
Als u nog steeds de oudere
visualstudio.com
URL's gebruikt, gebruikt u in plaats daarvan de volgende opdracht:Feed met projectbereik:
Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
Feed met organisatiebereik:
Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
Tip
Voor bepaalde versies van PowerShell moet een nieuwe sessie opnieuw worden opgestart nadat de
Register-PSRepository
cmdlet is uitgevoerd om te voorkomen dat de waarschuwing over pakketbronnen kan worden opgelost.Registreer uw pakketbron:
Feed met projectbereik:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Feed met organisatiebereik:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Voer de volgende opdracht uit om te bevestigen of de opslagplaats is geregistreerd. Met deze opdracht worden alle geregistreerde opslagplaatsen voor de huidige gebruiker ophaalt:
Get-PSRepository
Voer de volgende opdracht uit als u alle modules in de opslagplaats wilt vinden.
Find-Module -Repository PowershellAzureDevopsServices
Voer de volgende opdracht uit als u de Get-Hello-module wilt installeren.
Install-Module -Name Get-Hello -Repository PowershellAzureDevopsServices
Als de opdracht Install-Module de volgende fout retourneert: Kan pakketbron niet oplossen, voer de Register-PackageSource
cmdlet opnieuw uit met de Trusted
vlag als volgt:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Notitie
Als uw organisatie een firewall of een proxyserver gebruikt, moet u ervoor zorgen dat u URL's en IP-adressen van Azure Artifacts-domeinen toestaat.
Module registreren en installeren met Behulp van Azure Pipelines
In dit voorbeeld ziet u het proces voor het verifiëren en installeren van een PowerShell-module met behulp van een YAML-pijplijn. Als u uw persoonlijke toegangstoken in de pijplijn wilt gebruiken, moet u het als volgt opnemen als een pijplijnvariabele:
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Pijplijnen, selecteer uw pijplijn en selecteer Vervolgens Bewerken om uw pijplijn te bewerken.
Selecteer variabelen in de rechterbovenhoek en selecteer vervolgens het + teken om een nieuwe variabele te maken.
Geef een naam op voor de variabele en plak vervolgens uw persoonlijke toegangstoken in het tekstvak Waarde .
Zorg ervoor dat u het selectievakje Dit waardegeheim behouden inschakelt. Selecteer OK wanneer u klaar bent. U bent nu klaar om uw variabele in uw pijplijn te gebruiken.
trigger:
- main
pool:
vmImage: 'Windows-latest'
variables:
PackageFeedEndpoint: 'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2' ## For project scoped feeds use: 'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2'
PackageFeedEndpointCredential: '{"endpointCredentials": [{"endpoint":"$(PackageFeedEndpoint)", "username":"Admin", "password":"$(AZURE_DEVOPS_PAT)"}]}'
steps:
- powershell: |
Register-PSRepository -Name "psRepoPipeline" -SourceLocation '$(PackageFeedEndpoint)' -InstallationPolicy Trusted
displayName: 'Register Azure Artifacts Feed as PSRepository'
env:
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: $(PackageFeedEndpointCredential)
- powershell: |
echo (Get-PSRepository)
displayName: 'Get all module repositories'
- powershell: |
Find-Module -Name "Get-Hello" | Install-Module -Confirm:$false -Force
displayName: 'Install the Get-Hello PowerShell module'
env:
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: $(PackageFeedEndpointCredential)
Verwante artikelen:
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor