Bekerja dengan Repositori PowerShellGet Privat
Modul PowerShellGet mendukung repositori selain Galeri PowerShell. Cmdlet ini mengaktifkan skenario berikut:
- Mendukung serangkaian modul PowerShell tepercaya yang telah divalidasi sebelumnya untuk digunakan di lingkungan Anda
- Menguji alur CI/CD yang membangun modul atau skrip PowerShell
- Mengirimkan skrip dan modul PowerShell ke sistem yang tidak dapat mengakses internet
- Mengirimkan skrip dan modul PowerShell hanya tersedia untuk organisasi Anda
Artikel ini menjelaskan cara menyiapkan repositori PowerShell lokal. Artikel ini juga membahas modul OfflinePowerShellGetDeploy yang tersedia dari Galeri PowerShell. Modul ini berisi cmdlet untuk menginstal versi terbaru PowerShellGet ke repositori lokal Anda.
Jenis repositori lokal
Ada dua cara untuk membuat PSRepository lokal: Server NuGet atau berbagi file. Setiap jenis memiliki kelebihan dan kekurangan:
NuGet Server
Kelebihan | Kekurangan |
---|---|
Meniadakan fungsionalitas PowerShellGallery | Aplikasi multi-tingkat memerlukan perencanaan operasi & dukungan |
NuGet terintegrasi dengan Visual Studio, alat lain | Model autentikasi dan manajemen akun NuGet diperlukan |
NuGet mendukung metadata dalam .Nupkg paket |
Penerbitan memerlukan manajemen Kunci API & pemeliharaan |
Menyediakan pencarian, administrasi paket, dll. |
Berbagi file
Kelebihan | Kekurangan |
---|---|
Mudah diatur, dicadangkan, dan dirawat | Tidak ada UI di luar berbagi file dasar |
Model keamanan sederhana - izin pengguna pada berbagi | Keamanan terbatas dan tidak ada perekaman siapa yang memperbarui apa |
Tidak ada batasan seperti mengganti item yang ada |
PowerShellGet berfungsi dengan jenis dan mendukung penemuan versi dan penginstalan dependensi. Namun, beberapa fitur yang berfungsi untuk Galeri PowerShell tidak tersedia untuk server NuGet dasar atau berbagi file. Tidak ada diferensiasi skrip, modul, sumber daya DSC, atau kemampuan peran.
Membuat repositori NuGet.Server
Artikel berikut ini mencantumkan langkah-langkah untuk menyiapkan NuGet Server Anda sendiri.
Ikuti langkah-langkah hingga titik penambahan paket. Langkah-langkah untuk menerbitkan paket dibahas nanti dalam artikel ini.
Untuk repositori berbasis berbagi file, pastikan pengguna Anda memiliki izin untuk mengakses berbagi file.
Mendaftarkan repositori lokal
Sebelum repositori dapat digunakan, repositori harus didaftarkan menggunakan Register-PSRepository
perintah . Dalam contoh di bawah ini, InstallationPolicy diatur ke Trusted
, dengan asumsi bahwa Anda mempercayai repositori Anda sendiri.
# 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
Perhatikan perbedaan antara bagaimana kedua perintah menangani ScriptSourceLocation. Untuk repositori berbasis berbagi file, SourceLocation dan ScriptSourceLocation harus cocok. Untuk repositori berbasis web, repositori harus berbeda, jadi dalam contoh ini "/" berikutnya ditambahkan ke SourceLocation.
Saat menggunakan protokol berbagi file, seperti NFS atau SMB, pastikan untuk mengikuti panduan yang direkomendasikan untuk mengamankan protokol. Untuk informasi selengkapnya tentang mengamankan SMB di Windows, lihat [Peningkatan keamanan SMB][09].
Jika Anda ingin PSRepository yang baru dibuat menjadi repositori default, Anda harus membatalkan pendaftaran semua PSRepositories lainnya. Contohnya:
Unregister-PSRepository -Name PSGallery
Catatan
Nama repositori 'PSGallery' dicadangkan untuk digunakan oleh Galeri PowerShell. Anda dapat membatalkan pendaftaran PSGallery, tetapi Anda tidak dapat menggunakan kembali nama PSGallery untuk repositori lainnya.
Jika Anda perlu memulihkan PSGallery, jalankan perintah berikut:
Register-PSRepository -Default
Menerbitkan ke repositori lokal
Setelah mendaftarkan PSRepository lokal, Anda dapat menerbitkan ke PSRepository lokal Anda. Ada dua skenario penerbitan utama: menerbitkan modul Anda sendiri dan menerbitkan modul dari PSGallery.
Menerbitkan modul yang Anda tulis
Gunakan Publish-Module
dan Publish-Script
untuk menerbitkan modul Anda ke PSRepository lokal dengan cara yang sama seperti yang Anda lakukan untuk Galeri PowerShell.
- Tentukan lokasi untuk kode Anda
- Menyediakan kunci API
- Tentukan nama repositori. Contohnya,
-PSRepository LocalPSRepo
Catatan
Anda harus membuat akun di server NuGet, lalu masuk untuk menghasilkan dan menyimpan kunci API. Untuk berbagi file, gunakan string yang tidak kosong untuk nilai NuGetApiKey.
Contoh:
# Publish to a NuGet Server repository using my NuGetAPI key
$publishModuleSplat = @{
Path = 'c:\projects\MyModule'
Repository = 'LocalPsRepo'
NuGetApiKey = $nuGetApiKey
}
Publish-Module @publishModuleSplat
Penting
Untuk memastikan keamanan, kunci API tidak boleh dikodekan secara permanen dalam skrip. Gunakan sistem manajemen kunci yang aman. Saat menjalankan perintah secara manual, kunci API tidak boleh diteruskan sebagai teks biasa untuk menghindarinya dicatat, Read-Host
cmdlet dapat digunakan untuk meneruskan nilai kunci API dengan aman.
# 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
Menerbitkan modul dari PSGallery
Untuk menerbitkan modul dari PSGallery ke PSRepository lokal, Anda dapat menggunakan Save-Package
cmdlet .
- Tentukan Nama Paket
- Tentukan 'NuGet' sebagai Penyedia
- Tentukan lokasi PSGallery sebagai sumber (
https://www.powershellgallery.com/api/v2
) - Tentukan jalur ke Repositori lokal Anda
Contoh:
# 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
Jika PSRepository lokal Anda berbasis web, PSRepository memerlukan langkah tambahan yang menggunakan nuget.exe
untuk menerbitkan. Lihat dokumentasi untuk menggunakan nuget.exe.
Menginstal PowerShellGet pada sistem yang terputus
Menyebarkan PowerShellGet sulit di lingkungan yang mengharuskan sistem terputus dari internet. PowerShellGet memiliki proses bootstrap yang menginstal versi terbaru saat pertama kali digunakan. Modul OfflinePowerShellGetDeploy di Galeri PowerShell menyediakan cmdlet yang mendukung proses bootstrap ini.
Untuk bootstrap penyebaran offline, Anda perlu:
- Unduh dan instal OfflinePowerShellGetDeploy sistem anda yang terhubung ke internet dan sistem anda yang terputus
- Unduh PowerShellGet dan dependensinya pada sistem yang terhubung ke internet menggunakan
Save-PowerShellGetForOffline
cmdlet - Salin PowerShellGet dan dependensinya dari sistem yang terhubung ke internet ke sistem yang terputus
Install-PowerShellGetOffline
Gunakan pada sistem yang terputus untuk menempatkan PowerShellGet dan dependensinya ke dalam folder yang tepat
Perintah berikut menggunakan Save-PowerShellGetForOffline
untuk memasukkan semua komponen ke dalam folder 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'
Pada titik ini, Anda harus membuat konten F:\OfflinePowerShellGet
yang tersedia untuk sistem Anda yang terputus. Jalankan Install-PowerShellGetOffline
cmdlet untuk menginstal PowerShellGet pada sistem yang terputus.
Catatan
Penting bahwa Anda tidak menjalankan PowerShellGet di sesi PowerShell sebelum menjalankan perintah ini. Setelah PowerShellGet dimuat ke dalam sesi, komponen tidak dapat diperbarui. Jika Anda memulai PowerShellGet secara tidak sengaja, keluar dan mulai ulang PowerShell.
Import-Module F:\OfflinePowerShellGetDeploy
Install-PowerShellGetOffline -LocalFolder 'F:\OfflinePowerShellGet'
Setelah menjalankan perintah ini, Anda siap untuk menerbitkan PowerShellGet ke repositori lokal Anda.
# Publish to a NuGet Server repository using my NuGetAPI key
$publishModuleSplat = @{
Path = 'F:\OfflinePowershellGet'
Repository = 'LocalPsRepo'
NuGetApiKey = $nuGetApiKey
}
Publish-Module @publishModuleSplat
Penting
Untuk memastikan keamanan, kunci API tidak boleh dikodekan secara permanen dalam skrip. Gunakan sistem manajemen kunci yang aman. Saat menjalankan perintah secara manual, kunci API tidak boleh diteruskan sebagai teks biasa untuk menghindarinya dicatat, Read-Host
cmdlet dapat digunakan untuk meneruskan nilai kunci API dengan aman.
# 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
Menggunakan solusi Pengemasan untuk menghosting repositori PowerShellGet
Anda juga dapat menggunakan solusi pengemasan seperti Azure Artifacts untuk menghosting repositori PowerShellGet privat atau publik. Untuk informasi dan instruksi selengkapnya, lihat dokumentasi Azure Artifacts.
PowerShell Gallery
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk