Privát PowerShellGet-tárházak használata
A PowerShellGet modul nem a PowerShell-galéria támogatja az adattárakat. Ezek a parancsmagok a következő forgatókönyveket teszik lehetővé:
- PowerShell-modulok megbízható, előre ellenőrzött készletének támogatása a környezetben való használathoz
- PowerShell-modulokat vagy szkripteket buildelő CI/CD-folyamat tesztelése
- PowerShell-szkriptek és -modulok továbbítása olyan rendszerekhez, amelyek nem tudnak hozzáférni az internethez
- PowerShell-szkriptek és -modulok csak a szervezet számára érhetők el
Ez a cikk bemutatja, hogyan állíthat be helyi PowerShell-adattárat. A cikk a PowerShell-galéria elérhető OfflinePowerShellGetDeploy modult is ismerteti. Ez a modul parancsmagokat tartalmaz a PowerShellGet legújabb verziójának helyi adattárba való telepítéséhez.
Helyi adattártípusok
A helyi PSRepository kétféleképpen hozható létre: NuGet-kiszolgáló vagy fájlmegosztás. Minden típusnak vannak előnyei és hátrányai:
NuGet-kiszolgáló
Előnyök | Hátrányok |
---|---|
A PowerShellGallery funkcióinak utánzása | A többrétegű alkalmazás üzemeltetéstervezési & támogatást igényel |
A NuGet integrálható a Visual Studióval, más eszközökkel | Hitelesítési modellre és NuGet-fiókok kezelésére van szükség |
A NuGet támogatja a csomagok metaadatait .Nupkg |
A közzétételhez API-kulcskezelésre & karbantartásra van szükség |
Keresési, csomagfelügyeleti stb. szolgáltatásokat nyújt. |
Fájlmegosztás
Előnyök | Hátrányok |
---|---|
Egyszerű beállítás, biztonsági mentés és karbantartás | Az alapszintű fájlmegosztáson kívül nincs felhasználói felület |
Egyszerű biztonsági modell – felhasználói engedélyek a megosztáshoz | Korlátozott biztonság, és nincs rögzítés arról, hogy ki frissíti a |
Nincsenek korlátozások, például meglévő elemek cseréje |
A PowerShellGet mindkét típussal működik, és támogatja a verziók és a függőségek telepítését. A PowerShell-galéria működő egyes funkciók azonban nem érhetők el alapSzintű NuGet-kiszolgálókhoz vagy fájlmegosztásokhoz. Nincs különbség a szkriptek, modulok, DSC-erőforrások és szerepkör-képességek között.
NuGet.Server-adattár létrehozása
A következő cikk a saját NuGet-kiszolgáló beállításának lépéseit sorolja fel.
Kövesse a lépéseket egészen a csomagok hozzáadásáig. A csomagok közzétételének lépéseiről a cikk későbbi részében lesz szó.
Fájlmegosztás-alapú adattárak esetén győződjön meg arról, hogy a felhasználók rendelkeznek a fájlmegosztás elérésére vonatkozó engedélyekkel.
Helyi adattár regisztrálása
Ahhoz, hogy egy adattár használható legyen, regisztrálva kell lennie a Register-PSRepository
paranccsal. Az alábbi példákban a InstallationPolicy értékre van állítva Trusted
, azzal a feltételezéssel, hogy megbízik a saját adattárában.
# Register a NuGet-based server
$registerPSRepositorySplat = @{
Name = 'LocalPSRepo'
SourceLocation = 'http://MyLocalNuget/Api/V2/'
ScriptSourceLocation = 'http://MyLocalNuget/Api/V2'
InstallationPolicy = 'Trusted'
}
Register-PSRepository @registerPSRepositorySplat
# Register a file share on my local machine
$registerPSRepositorySplat = @{
Name = 'LocalPSRepo'
SourceLocation = '\\localhost\PSRepoLocal\'
ScriptSourceLocation = '\\localhost\PSRepoLocal\'
InstallationPolicy = 'Trusted'
}
Register-PSRepository @registerPSRepositorySplat
Jegyezze fel a különbséget a két parancs ScriptSourceLocation kezelése között. Fájlmegosztás-alapú adattárak esetén a SourceLocation és a ScriptSourceLocation tulajdonságnak egyeznie kell. Webalapú adattárak esetén ezeknek eltérőnek kell lenniük, ezért ebben a példában egy záró "/" lesz hozzáadva a SourceLocation elemhez.
Ha fájlmegosztási protokollt (például NFS-t vagy SMB-t) használ, mindenképpen kövesse a protokoll biztonságossá tételéhez ajánlott útmutatást. Az SMB windowsos védelméről további információt az [SMB biztonsági fejlesztései][09] című témakörben talál.
Ha azt szeretné, hogy az újonnan létrehozott PSRepository legyen az alapértelmezett adattár, törölje az összes többi PSRepositories regisztrációját. Például:
Unregister-PSRepository -Name PSGallery
Megjegyzés
A "PSGallery" adattárnév a PowerShell-galéria számára van fenntartva. Megszüntetheti a PSGallery regisztrációját, de a PSGallery nevet nem használhatja újra más adattárakhoz.
Ha vissza kell állítania a PSGalleryt, futtassa a következő parancsot:
Register-PSRepository -Default
Közzététel helyi adattárban
Miután regisztrálta a helyi PSRepository-t, közzéteheti a helyi PSRepository-ben. Két fő közzétételi forgatókönyv létezik: saját modul közzététele és egy modul közzététele a PSGalleryből.
A létrehozott modul közzététele
A és Publish-Script
a használatával Publish-Module
a modult ugyanúgy teheti közzé a helyi PSRepositoryban, mint a PowerShell-galéria.
- Adja meg a kód helyét
- API-kulcs megadásával
- Adja meg az adattár nevét. Például:
-PSRepository LocalPSRepo
Megjegyzés
Létre kell hoznia egy fiókot a NuGet-kiszolgálón, majd be kell jelentkeznie az API-kulcs létrehozásához és mentéséhez. Fájlmegosztás esetén használjon bármilyen nem üres sztringet a NuGetApiKey értékhez.
Példák:
# Publish to a NuGet Server repository using my NuGetAPI key
$publishModuleSplat = @{
Path = 'c:\projects\MyModule'
Repository = 'LocalPsRepo'
NuGetApiKey = $nuGetApiKey
}
Publish-Module @publishModuleSplat
Fontos
A biztonság érdekében az API-kulcsokat nem szabad a szkriptekben nehezen kódolt módon megadni. Használjon biztonságos kulcskezelő rendszert. Ha manuálisan hajt végre egy parancsot, az API-kulcsokat nem szabad egyszerű szövegként átadni a naplózás elkerülése érdekében, a Read-Host
parancsmag használatával biztonságosan átadható az API-kulcs értéke.
# Publish to a file share repo - the NuGet API key must be a non-blank string
$publishModuleSplat = @{
Path = 'c:\projects\MyModule'
Repository = 'LocalPsRepo'
NuGetApiKey = 'AnyStringWillDo'
}
Publish-Module @publishModuleSplat
Modul közzététele a PSGalleryből
Ha közzé szeretne tenni egy modult a PSGalleryből a helyi PSRepository-ba, használhatja a Save-Package
parancsmagot.
- Adja meg a csomag nevét
- Adja meg a "NuGet" értéket szolgáltatóként
- Forrásként adja meg a PSGallery helyét (
https://www.powershellgallery.com/api/v2
) - Adja meg a helyi adattár elérési útját
Példa:
# Publish from the PSGallery to your local Repository
$savePackageSplat = @{
Name = 'PackageName'
ProviderName = 'NuGet'
Source = 'https://www.powershellgallery.com/api/v2'
Path = '\\localhost\PSRepoLocal\'
}
Save-Package @savePackageSplat
Ha a helyi PSRepository webalapú, a közzétételhez további lépésre nuget.exe
van szükség. A nuget.exehasználatához tekintse meg a dokumentációt.
A PowerShellGet telepítése leválasztott rendszerre
A PowerShellGet üzembe helyezése nehéz olyan környezetekben, amelyekben a rendszereknek le kell választaniuk az internetről. A PowerShellGet rendszerindítási folyamattal rendelkezik, amely az első használatkor telepíti a legújabb verziót. A PowerShell-galéria OfflinePowerShellGetDeploy modulja olyan parancsmagokat biztosít, amelyek támogatják ezt a rendszerindítási folyamatot.
Offline üzemelő példány indításához a következőket kell elvégeznie:
- Töltse le és telepítse az OfflinePowerShellGetDeploy internetkapcsolattal rendelkező rendszert és a leválasztott rendszereket
- Töltse le a PowerShellGetet és annak internetkapcsolattal rendelkező rendszerfüggőségeit a
Save-PowerShellGetForOffline
parancsmag használatával - A PowerShellGet és függőségeinek másolása az internethez csatlakoztatott rendszerről a leválasztott rendszerre
Install-PowerShellGetOffline
A leválasztott rendszeren lévő paranccsel helyezze a PowerShellGetet és annak függőségeit a megfelelő mappákba
Az alábbi parancsokkal Save-PowerShellGetForOffline
az összes összetevőt egy mappába helyezheti f:\OfflinePowerShellGet
# Requires -RunAsAdministrator
#Download the OfflinePowerShellGetDeploy to a location that can be accessed
# by both the connected and disconnected systems.
Save-Module -Name OfflinePowerShellGetDeploy -Path 'F:\' -Repository PSGallery
Import-Module F:\OfflinePowerShellGetDeploy
# Put PowerShellGet somewhere locally
Save-PowerShellGetForOffline -LocalFolder 'F:\OfflinePowerShellGet'
Ezen a ponton elérhetővé kell tennie a tartalmát F:\OfflinePowerShellGet
a leválasztott rendszerek számára. Futtassa a parancsmagot a Install-PowerShellGetOffline
PowerShellGet leválasztott rendszerre való telepítéséhez.
Megjegyzés
Fontos, hogy a parancsok futtatása előtt ne futtassa a PowerShellGetet a PowerShell-munkamenetben. Miután betöltötte a PowerShellGetet a munkamenetbe, az összetevők nem frissíthetők. Ha véletlenül indítja el a PowerShellGetet, lépjen ki, és indítsa újra a PowerShellt.
Import-Module F:\OfflinePowerShellGetDeploy
Install-PowerShellGetOffline -LocalFolder 'F:\OfflinePowerShellGet'
A parancsok futtatása után készen áll a PowerShellGet közzétételére a helyi adattárban.
# Publish to a NuGet Server repository using my NuGetAPI key
$publishModuleSplat = @{
Path = 'F:\OfflinePowershellGet'
Repository = 'LocalPsRepo'
NuGetApiKey = $nuGetApiKey
}
Publish-Module @publishModuleSplat
Fontos
A biztonság érdekében az API-kulcsokat nem szabad a szkriptekben szigorúan kódolt módon megadni. Használjon biztonságos kulcskezelő rendszert. A parancs manuális végrehajtásakor az API-kulcsokat nem szabad egyszerű szövegként átadni, hogy elkerülje a naplózást, a Read-Host
parancsmag használatával biztonságosan átadható az API-kulcs értéke.
# Publish to a file share repo - the NuGet API key must be a non-blank string
$publishModuleSplat = @{
Path = 'F:\OfflinePowerShellGet'
Repository = 'LocalPsRepo'
NuGetApiKey = 'AnyStringWillDo'
}
Publish-Module @publishModuleSplat
Csomagolási megoldások használata PowerShellGet-adattárak üzemeltetéséhez
Az Azure Artifactshez hasonló csomagolási megoldásokkal privát vagy nyilvános PowerShellGet-adattárat is üzemeltethet. További információkért és útmutatásért tekintse meg az Azure Artifacts dokumentációját.
PowerShell Gallery