Selon la définition de Microsoft, NuGet est le gestionnaire de paquets pour .NET. Les outils clients NuGet permettent de produire et de consommer des paquets.
nuget.org et la PowerShell Gallery sont des exemples de flux NuGet. Ils permettent aux utilisateurs de publier des paquets pour que d’autres les consomment. Lorsque vous utilisez Publish-PSResource ou Publish-Module, vous créez un paquet NuGet et vous le publiez dans un flux.
Créer un flux NuGet dans PowerShell Universal
Les flux NuGet typiques reposent sur des milliers de lignes de code pour offrir des mécanismes robustes de stockage des métadonnées, de mise en cache et de recherche de paquets. Pour les utilisateurs qui ont un nombre limité de paquets, un outil peut créer des flux statiques : Sleet. L’outil en ligne de commande Sleet crée des fichiers JSON statiques et un stockage pour les paquets NuGet. Il ne prend pas en charge autant d’options que d’autres technologies, mais il offre de la simplicité.
Pour le reste de cet article, nous verrons comment utiliser Sleet pour créer un flux NuGet dans PowerShell Universal.
Installer Sleet
Vous pouvez installer Sleet comme outil global dotnet si le SDK .NET est installé.
dotnet tool install -g sleet
Une fois installé, vous pouvez simplement exécuter sleet pour accéder à l’outil.
Configurer un flux Sleet
Ensuite, configurons un flux Sleet simple. Créez un répertoire, puis une configuration Sleet locale.
New-Item -ItemType Directory C:\sleet\
Set-Location C:\sleet
sleet createconfig --local
Ouvrez le fichier sleet.json généré et configurez les propriétés du flux. L’URI de base pointera vers un dossier publié dans PowerShell Universal.
{
"username": "",
"useremail": "",
"sources": [
{
"name": "myLocalFeed",
"type": "local",
"path": "C:\\sleet\\myfeed",
"baseURI": "http://localhost:5000/feed/"
}
]
}
Publier un paquet
Pour publier un paquet, vous pouvez utiliser la commande Sleet suivante contre un seul paquet NuGet ou un répertoire de paquets. J’ai publié Posh-SSH.
Invoke-WebRequest 'https://www.powershellgallery.com/api/v2/package/Posh-SSH/3.0.8' -OutFile "C:\Users\adamr\Downloads\posh-ssh.3.0.8.nupkg"
Set-Location C:\sleet
sleet push -s myLocalFeed "C:\Users\adamr\Downloads\posh-ssh.3.0.8.nupkg"
Sleet mettra à jour tous les fichiers de flux nécessaires, créera la bonne structure de dossiers et déplacera le nupkg dans le dossier de stockage flatcontainer.
Héberger dans PowerShell Universal
Ensuite, il faut configurer PowerShell Universal pour servir le flux NuGet. Nous pouvons le faire avec un dossier publié. Vous devrez indiquer le chemin du dossier du flux NuGet.
New-PSUPublishedFolder -Path C:\sleet\myfeed -RequestPath /feed
Vous pouvez vérifier que le flux est accessible en visitant l’URL suivante.
http://localhost:5000/feed/index.json
Enregistrer un dépôt PowerShellGet
PowerShellGet v3 est requis, car PowerShellGet v2 ne prend pas en charge les flux NuGet v3. Sleet ne génère que des flux NuGet v3.
Install-Module PowerShellGet -AllowPrerelease -Force
Une fois PowerShellGet v3 installé, vous pouvez utiliser Register-PSResourceRepository pour enregistrer votre nouveau flux.
Register-PSResourceRepository -Name 'MyLocalFeed' -Uri 'http://localhost:5000/feed/index.json'
Vous pouvez vérifier que le dépôt a été enregistré correctement avec Find-PSResource.
Find-PSResource -Name posh-ssh
Name Version Prerelease Repository Description
---- ------- ---------- ---------- -----------
Posh-SSH 3.0.8.0 MyLocalFeed Provide SSH and SCP functionality for executing commands against remot…
Vous pourrez aussi utiliser des commandes comme Save-PSResource.
Save-PSResource -Name posh-ssh -Path .\ -Repository MyLocalFeed
Téléverser de nouveaux paquets dans PowerShell Universal
Au lieu d’exécuter manuellement les commandes Sleet sur la machine PowerShell Universal, vous pouvez créer un script PSU qui accepte un fichier. Créez un nouveau script dans PSU avec le contenu suivant.
param(
[File]$File
)
$Package = [IO.Path]::GetTempFileName()
[System.IO.File]::WriteAllBytes($Package, $File.Content)
Set-Location C:\sleet
sleet push -s myLocalFeed $Package
Une fois le script terminé, les fichiers du flux NuGet auront été mis à jour et le paquet sera disponible via les commandes PowerShellGet.
Find-PSResource -Name pswindowsupdate
Name Version Prerelease Repository Description
---- ------- ---------- ---------- -----------
PSWindowsUpdate 2.2.0.3 MyLocalFeed This module contain cmdlets to manage Windows Update Client.
Afficher les paquets dans un tableau de bord
Vous pouvez utiliser le cmdlet Find-PSResource pour afficher tous les paquets de votre flux.
New-UDDashboard -Title 'PowerShell Universal' -Content {
$Packages = Find-PSResource -Name * -Repository MyLocalFeed | Select Name,Version,Description
New-UDTable -Data $Packages
}
Conclusion
Dans cet article, nous avons vu comment configurer un flux NuGet semi-statique avec Sleet et PowerShell Universal.
Prêt à construire? Téléchargez PowerShell Universal.

Adam Driscoll