Laut Microsoft ist NuGet der Paketmanager für .NET. Die NuGet-Client-Tools ermöglichen das Erstellen und Konsumieren von Paketen.
nuget.org und die PowerShell Gallery sind Beispiele für NuGet-Feeds. Sie ermöglichen es Benutzern, Pakete zu veröffentlichen, damit andere sie konsumieren können. Wenn Sie Publish-PSResource oder Publish-Module verwenden, erstellen Sie ein NuGet-Paket und veröffentlichen es in einem Feed.
Einen NuGet-Feed in PowerShell Universal erstellen
Typische NuGet-Feeds basieren auf Tausenden von Codezeilen, um robuste Mechanismen für Metadatenspeicher, Caching und Paketsuche bereitzustellen. Für Benutzer mit einer begrenzten Anzahl von Paketen gibt es ein Tool, das statische Feeds erstellen kann: Sleet. Das Sleet-Befehlszeilentool erstellt statische JSON-Dateien und Speicher für NuGet-Pakete. Es unterstützt nicht so viele Optionen wie andere Technologien, bietet aber Einfachheit.
Im Rest dieses Beitrags zeigen wir, wie Sie mit Sleet einen NuGet-Feed in PowerShell Universal erstellen.
Sleet installieren
Sie können Sleet als globales dotnet-Tool installieren, wenn das .NET SDK installiert ist.
dotnet tool install -g sleet
Nach der Installation können Sie einfach sleet ausführen, um auf das Tool zuzugreifen.
Einen Sleet-Feed konfigurieren
Als Nächstes richten wir einen einfachen Sleet-Feed ein. Erstellen Sie ein Verzeichnis und dann eine lokale Sleet-Konfiguration.
New-Item -ItemType Directory C:\sleet\
Set-Location C:\sleet
sleet createconfig --local
Öffnen Sie die erzeugte Datei sleet.json und konfigurieren Sie die Eigenschaften des Feeds. Die Basis-URI zeigt auf einen veröffentlichten Ordner in PowerShell Universal.
{
"username": "",
"useremail": "",
"sources": [
{
"name": "myLocalFeed",
"type": "local",
"path": "C:\\sleet\\myfeed",
"baseURI": "http://localhost:5000/feed/"
}
]
}
Ein Paket veröffentlichen
Um ein Paket zu veröffentlichen, können Sie den folgenden Sleet-Befehl gegen ein einzelnes NuGet-Paket oder ein Verzeichnis von Paketen verwenden. Ich habe Posh-SSH veröffentlicht.
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 aktualisiert alle erforderlichen Feed-Dateien, erstellt die passende Ordnerstruktur und verschiebt das nupkg in den Speicherordner flatcontainer.
In PowerShell Universal hosten
Als Nächstes müssen wir PowerShell Universal so einrichten, dass der NuGet-Feed bereitgestellt wird. Das geht mit einem veröffentlichten Ordner. Sie müssen den Pfad zum NuGet-Feed-Ordner festlegen.
New-PSUPublishedFolder -Path C:\sleet\myfeed -RequestPath /feed
Sie können prüfen, ob der Feed erreichbar ist, indem Sie die folgende URL aufrufen.
http://localhost:5000/feed/index.json
Ein PowerShellGet-Repository registrieren
PowerShellGet v3 ist erforderlich, weil PowerShellGet v2 keine NuGet-v3-Feeds unterstützt. Sleet erzeugt nur NuGet-v3-Feeds.
Install-Module PowerShellGet -AllowPrerelease -Force
Sobald PowerShellGet v3 installiert ist, können Sie Register-PSResourceRepository verwenden, um Ihren neuen Feed zu registrieren.
Register-PSResourceRepository -Name 'MyLocalFeed' -Uri 'http://localhost:5000/feed/index.json'
Sie können mit Find-PSResource prüfen, ob das Repository korrekt registriert wurde.
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…
Sie können auch Befehle wie Save-PSResource verwenden.
Save-PSResource -Name posh-ssh -Path .\ -Repository MyLocalFeed
Neue Pakete in PowerShell Universal hochladen
Statt die Sleet-Befehle manuell auf der PowerShell Universal-Maschine auszuführen, können Sie ein PSU-Skript erstellen, das eine Datei entgegennimmt. Erstellen Sie in PSU ein neues Skript mit folgendem Inhalt.
param(
[File]$File
)
$Package = [IO.Path]::GetTempFileName()
[System.IO.File]::WriteAllBytes($Package, $File.Content)
Set-Location C:\sleet
sleet push -s myLocalFeed $Package
Nach Abschluss des Skripts sind die NuGet-Feed-Dateien aktualisiert, und das Paket ist über die PowerShellGet-Befehle verfügbar.
Find-PSResource -Name pswindowsupdate
Name Version Prerelease Repository Description
---- ------- ---------- ---------- -----------
PSWindowsUpdate 2.2.0.3 MyLocalFeed This module contain cmdlets to manage Windows Update Client.
Pakete in einem Dashboard anzeigen
Sie können das Cmdlet Find-PSResource verwenden, um alle Pakete in Ihrem Feed anzuzeigen.
New-UDDashboard -Title 'PowerShell Universal' -Content {
$Packages = Find-PSResource -Name * -Repository MyLocalFeed | Select Name,Version,Description
New-UDTable -Data $Packages
}
Fazit
In diesem Beitrag haben wir gezeigt, wie Sie mit Sleet und PowerShell Universal einen semistatischen NuGet-Feed einrichten.
Bereit zum Bauen? PowerShell Universal herunterladen.

Adam Driscoll