Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure DevOps Services
Az Azure Artifacts kényelmes megoldást kínál a PowerShell-szkriptek megosztására. Az Azure Artifacts-hírcsatornák használatával zökkenőmentesen közzéteheti PowerShell-moduljait a parancssorból, és a hírcsatorna-beállításokon keresztül szabályozhatja a hozzájuk való hozzáférést. Ez a cikk végigvezeti az Azure Artifacts-hírcsatorna privát PowerShell-adattárként való beállításán a PowerShell-modulok tárolásához és megosztásához.
Ebből a cikkből megtudhatja, hogyan:
- Személyes hozzáférési jogkivonat létrehozása
- PowerShell-modul létrehozása
- SecretStore-tároló létrehozása és adattár regisztrálása
- Csomagok közzététele és felhasználása hírcsatornából
Előfeltételek
Ha még nem tette meg, hozzon létre egy Azure DevOps-szervezetet és egy projektet.
Hozzon létre egy új hírcsatornát , ha még nem rendelkezik ilyen hírcsatornával .
Telepítse
PowerShell 6.0-s vagy újabb verzióját, hogy biztosan rendelkezzen a PSResourceGettelepítéséhez szükségesPowerShellGet verzióval.Telepítse a PSResourceGet-et.
Telepítse a SecretManagement és a SecretStore modulokat.
Feljegyzés
A PSResourceGet nem támogatja az Azure Artifacts hitelesítőadat-szolgáltatót.
Személyes hozzáférési jogkivonat létrehozása
A személyes hozzáférési jogkivonatok digitális identitásként szolgálnak, és alternatív jelszóként szolgálnak az Azure DevOps használatával történő hitelesítéshez.
Navigálás az Azure DevOps-szervezethez
https://dev.azure.com/<ORGANIZATION_NAME>/Válassza a felhasználói beállítások ikont, válassza a Személyes hozzáférési jogkivonatok lehetőséget, majd az Új jogkivonat lehetőséget.
Adja meg a PAT nevét, adja meg a lejárati dátumot, válassza az Egyénileg meghatározott, majd a csomagolás>olvasása, írása és kezelése lehetőséget.
Ha elkészült, válassza a Létrehozás lehetőséget, és győződjön meg arról, hogy a PAT-t biztonságos helyen másolja és tárolja.
PowerShell-modul létrehozása
Ha nem rendelkezik saját modullal, az ebben a szakaszban található utasításokat követve hozzon létre egy PowerShell-mintamodult. Ellenkező esetben ugorjon a következő lépésre:
Hozzon létre egy új mappát PowerShell-Demo. Navigáljon a mappába, és hozzon létre egy új fájlt PowerShell-Demo.psm1 néven.
Illessze be az alábbi szkriptet a PowerShell-Demo.psm1 fájlba:
Function PowerShell-Demo{ Write-Host "Hello World!" }Hozza létre a moduljegyzéket a következő parancs futtatásával a PowerShell-Demo könyvtárban:
New-ModuleManifest -Path .\PowerShell-Demo.psd1Nyissa meg a PowerShell-Demo.psd1 fájlt, és keresse meg a változót
RootModule. Ez a beállítás megadja a PowerShell által a modul importálásakor betölthető fő szkriptfájlt. Cserélje le az üres sztringet a PowerShell-Demo.psm1 fájl elérési útjára.RootModule = 'PowerShell-Demo.psm1'A
FunctionsToExportszakasz meghatározza, hogy mely függvények érhetők el a felhasználók számára a modul importálásakor. Adja meg a PowerShell-Demo függvényt:FunctionsToExport = @('PowerShell-Demo')Keresse meg azt a
FileListszakaszt, amely felsorolja a modul csomagolásakor szereplő fájlokat. Adja hozzá a modulhoz csomagolni kívánt fájlt:FileList = @('./PowerShell-Demo.psm1')
Adattár regisztrálása
Az alábbi parancs futtatásával hozzon létre egy hitelesítő objektumot. Cserélje le a helyőrzőket a megfelelő információra.
$username = "<USER_NAME>" $patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force $credentials = New-Object System.Management.Automation.PSCredential($username, $patToken)Győződjön meg arról, hogy a SecretManagement és a SecretStore telepítve van, majd futtassa a következő parancsot egy tároló létrehozásához és egy titkos kód hozzáadásához:
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')Annak ellenőrzéséhez, hogy a tároló és a titkos kulcs sikeresen létrejött-e, futtassa a következő parancsot az összes titkos kulcs listázásához:
PS > Get-SecretInfo Name Type VaultName ---- ---- --------- MyCredential PSCredential MySecretVaultFuttassa a következő parancsot a PowerShell-adattár regisztrálásához. A hivatkozást a
SourceLocationmenüpontban találja meg, a Projekt beállítás részben a következőn: > URL, amely a NuGet.exe-hez kapcsolódik.Projekt hatókörű hírcsatorna:
Register-PSResourceRepository -Name "PowershellPSResourceRepository" ` -Uri "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" ` -Trusted ` -CredentialInfo $CredentialInfoSzervezeti hatókörű hírfolyam
Register-PSResourceRepository -Name "PowershellPSResourceRepository" ` -Uri "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" ` -Trusted ` -CredentialInfo $CredentialInfo
Tipp.
A PowerShell néhány verziójában szükség lehet egy új munkamenet indítására a
Register-PSResourceRepositoryparancsmag futtatása után, hogy elkerüljük a csomagforrás nem található figyelmeztetést.Annak ellenőrzéséhez, hogy az adattár sikeresen regisztrálva lett-e, futtassa a következő parancsot az aktuális felhasználó összes regisztrált adattárának lekéréséhez:
Get-PSResourceRepository
Feljegyzés
Ha a következő hibaüzenet jelenik meg: A válaszüzenet állapotkódja nem jelzi a sikert: 404 (Nem található)., győződjön meg arról, hogy a forrás URL-címe a nuget/v3/index.json-re mutat ahelyett, hogy a nuget/v2-re.
Csomag közzététele
Futtassa a következő parancsot a csomag hírcsatornában való közzétételéhez. Cserélje le a helyőrzőket a csomag elérési útjára, az adattár nevére, a korábban létrehozott hitelesítő objektumra, és adjon meg bármilyen sztringet az ApiKey számára.
Publish-PSResource -Path <PACKAGE_PATH> -Repository <REPOSITORY_NAME> -Credential $credentials -ApiKey <ANY_STRING>
Példa:
PS C:\AzureDevOps\Demos\PowerShellDemo> Publish-PSResource -Path .\scripts\ -Repository FabrikamFiberFeed -Credential $credentials -ApiKey az -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'
Csomag telepítése
Annak ellenőrzéséhez, hogy a modul elérhető-e az adattárban, a következő paranccsal keressen rá:
Find-PSResource -Name <RESOURCE_NAME> -Repository <REPOSITORY_NAME> -verboseFuttassa a következő parancsot a modul legújabb stabil verziójának telepítéséhez:
Install-PSResource <MODULE_NAME>
Tipp.
Ha a következő hibaüzenet jelenik meg: kivétel a "WriteObject" hívásakor., indítson el egy új PowerShell-ablakot, és futtassa a következőt: Get-SecretInfo. Adja meg a tároló jelszavát a Find-PSResource és Install-PSResource futtatása előtt, mivel a SecretStore időtúllépési időszaka lejárhat. Az alapértelmezett PasswordTimeout 900 másodperc, de szükség szerint módosíthatja ezt az értéket. További részletekért lásd : A SecretStore használata az automatizálásban .
Ebből a cikkből megtudhatja, hogyan:
- Személyes hozzáférési jogkivonat létrehozása
- PowerShell-modul létrehozása, csomagolása és közzététele
- Csatlakozás a hírcsatornához PowerShell-adattárként
- PowerShell-modul regisztrálása és telepítése az Azure Pipelines használatával
Előfeltételek
Ha még nem tette meg, hozzon létre egy Azure DevOps-szervezetet és egy projektet.
Hozzon létre egy új hírcsatornát , ha még nem rendelkezik ilyen hírcsatornával .
Telepítse az Azure Artifacts hitelesítőadat-szolgáltatót.
Telepítse a Windows MSBuild alkalmazást az alábbi lehetőségek egyikével:
Telepítse a NuGet(.exe) 4.8.0.5385 vagy újabb verzióját .
Telepítse a(z) dotnet-futtatókörnyezet8.0.x vagy újabb verzióját.
Telepítse PowerShell 6.0-s vagy újabb verzióját, hogy biztosan a megfelelő PowerShellGet és PackageManagement verzióval rendelkezzen.
Személyes hozzáférési jogkivonat létrehozása
A személyes hozzáférési jogkivonatok digitális identitásként szolgálnak, és alternatív jelszóként szolgálnak az Azure DevOps használatával történő hitelesítéshez.
Navigálás az Azure DevOps-szervezethez
https://dev.azure.com/<ORGANIZATION_NAME>/Válassza a felhasználói beállítások ikont, válassza a Személyes hozzáférési jogkivonatok lehetőséget, majd az Új jogkivonat lehetőséget.
Adja meg a PAT nevét, adja meg a lejárati dátumot, válassza az Egyénileg meghatározott, majd a csomagolás>olvasása, írása és kezelése lehetőséget.
Ha elkészült, válassza a Létrehozás lehetőséget, és győződjön meg arról, hogy a PAT-t biztonságos helyen másolja és tárolja.
PowerShell-modul létrehozása
Ha nem rendelkezik saját modullal, az ebben a szakaszban található utasításokat követve hozzon létre egy PowerShell-mintamodult. Ellenkező esetben ugorjon a következő lépésre:
Hozzon létre egy új mappát Get-Hello. Lépjen a mappába, és hozzon létre egy új fájlt , a Get-Hello.psm1 fájlt.
Illessze be a következő szkriptet a Get-Hello.psm1 fájlba:
Function Get-Hello{ Write-Host "Hello Azure DevOps!" }Hozza létre a moduljegyzéket az alábbi parancs futtatásával a Get-Hello könyvtárban:
New-ModuleManifest -Path .\Get-Hello.psd1Nyissa meg a Get-Hello.psd1 fájlt, és keresse meg a változót
RootModule. Ez a beállítás megadja a PowerShell által a modul importálásakor betölthető fő szkriptfájlt. Cserélje le az üres karakterláncot a Get-Hello.psm1 fájl elérési útjára:RootModule = 'Get-Hello.psm1'A
FunctionsToExportszakasz meghatározza, hogy mely függvények érhetők el a felhasználók számára a modul importálásakor. Adja meg a Get-Hello függvényt:FunctionsToExport = @('Get-Hello')Keresse meg a
FileListszakaszt, amely meghatározza a modul csomagolásakor szereplő fájlokat. Adja hozzá a modulhoz csomagolni kívánt fájlt:FileList = @('./Get-Hello.psm1')
Modul csomagolása és közzététele
Nuspec-fájl létrehozása a modulhoz. Ez a parancs létrehoz egy Get-Hello.nuspec fájlt, amely tartalmazza a modul csomagolásához szükséges metaadatokat:
nuget spec Get-HelloFuttassa a következő parancsot a modul becsomagolásához:
nuget pack Get-Hello.nuspecFuttassa a következő parancsot a hírcsatorna forrás URL-címének hozzáadásához. Győződjön meg arról, hogy a V2-t használja a hírcsatorna forrás URL-címében, mivel a NuGet V3 nem támogatott.
Szervezeti hatókörű hírfolyam
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>"Projekt hatókörű hírcsatorna:
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>"
Tegye közzé a csomagot a hírcsatornában:
nuget push -Source "<FEED_NAME>" -ApiKey "<ANY_STRING>" "<PACKAGE_PATH>"
Fontos
A moduljegyzékben (.psd1) szereplő verziószámnak meg kell egyeznie a .nuspec fájl verziószámával.
Csatlakozás a hírcsatornához PowerShell-adattárként
Ez a szakasz végigvezeti a PowerShell-adattárként tárolt hírcsatornák hitelesítésén és a hírcsatornában üzemeltetett modul felhasználásán:
A PowerShell parancssori ablakában futtassa az alábbi parancsot a hitelesítő adatok beállításához. Cserélje le a helyőrzőket a megfelelő információra.
$patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force $credsAzureDevopsServices = New-Object System.Management.Automation.PSCredential("<USER_NAME>", $patToken)Regisztrálja a PowerShell-adattárat. A hivatkozást a
SourceLocationmenüpontban találja meg, a Projekt beállítás részben a következőn: > URL, amely a NuGet.exe-hez kapcsolódik.Projekt hatókörű hírcsatorna:
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 $credsAzureDevopsServicesSzervezeti hatókörű hírfolyam
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
Tipp.
A PowerShell néhány verziójában szükség lehet egy új munkamenet indítására a
Register-PSRepositoryparancsmag futtatása után, hogy elkerüljük a csomagforrás nem található figyelmeztetést.A csomag forrásának regisztrálása:
Projekt hatókörű hírcsatorna:
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 $credsAzureDevopsServicesSzervezeti hatókörű hírfolyam
Register-PackageSource -Name <REPOSITORY_NAME> -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Feljegyzés
- Register-PSRepository: PowerShell-adattár regisztrálásához használatos modulok kereséséhez és telepítéséhez.
- Register-PackageSource: Csomagforrás regisztrálására szolgál a csomagok kereséséhez és közzétételéhez.
Annak ellenőrzéséhez, hogy az adattár sikeresen regisztrálva lett-e, futtassa a következő parancsot az aktuális felhasználó összes regisztrált adattárának lekéréséhez:
Get-PSRepositoryFuttassa a következő parancsot a Get-Hello modul telepítéséhez.
Install-Module -Name <PACKAGE_NAME> -Repository <REPOSITORY_NAME>
Feljegyzés
Ha a szervezet tűzfalat vagy proxykiszolgálót használ, győződjön meg arról, hogy engedélyezi az Azure Artifacts-tartomány URL-címeinek és IP-címeinek elérését.
Csomag telepítése a futószalagról
Ez a példa végigvezeti az Azure Artifacts-hírcsatorna hitelesítésén és egy PowerShell-modul folyamatból való telepítésén. A személyes hozzáférési jogkivonat használatához adja hozzá folyamatváltozóként az alábbiak szerint:
Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.
Válassza a Folyamatok lehetőséget, válassza ki a folyamatdefiníciót, majd válassza a Szerkesztés lehetőséget a folyamat módosításához.
Válassza a változókat a jobb felső sarokban, majd válassza az Új változó lehetőséget.
Adja meg a változó nevét, majd illessze be a személyes hozzáférési jogkivonatot az Érték szövegmezőbe.
Győződjön meg arról, hogy bejelöli az Érték titkos kulcs megőrzése jelölőnégyzetet. Ha elkészült, válassza az OK gombot.
Adjon hozzá egy második változót a userName elemhez. Adja meg a változó nevét, majd írja be a userName nevet az Érték szövegmezőbe.
Ha végzett, válassza a Mentés lehetőséget.
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'
A nagyvállalati üzemelő példányok és a nevesített felhasználói fiókoktól független fokozott biztonság érdekében a SYSTEM_ACCESSTOKEN az Azure Artifact-hírcsatorna eléréséhez használható. Ebben a kontextusban nincs szükség felhasználónévre, és tetszőleges sztring is lehet a paraméterkövetelmények teljesítéséhez.
steps:
- powershell: |
$token = $env:SYSTEM_ACCESSTOKEN | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential('ArbitraryPipelineUser', $token)
Register-PSRepository -Name <REPOSITORY_NAME> -SourceLocation "$(PackageFeedEndpoint)" -InstallationPolicy Trusted -Credential $credential
displayName: 'Register PSRepository'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)