Cos'è un modulo PowerShell?
Un modulo PowerShell è un pacchetto riutilizzabile che contiene alcune funzionalità PowerShell. Tutto in PowerShell (funzioni, variabili, risorse DSC, ecc.) può essere confezionato in moduli. Tipicamente, i moduli sono cartelle contenenti tipi specifici di file memorizzati su un percorso specifico. Esistono diversi tipi di moduli PowerShell disponibili.
Cos'è uno script PowerShell?
Uno script PowerShell è una serie di comandi memorizzati in un file .ps1 per abilitare il riutilizzo e la condivisione. I flussi di lavoro PowerShell sono anche script PowerShell, che delineano un insieme di compiti e forniscono sequenziamento per tali compiti. Per maggiori informazioni, visita Iniziare con il flusso di lavoro PowerShell.
In cosa si differenziano gli script PowerShell dai moduli PowerShell?
I moduli sono generalmente migliori per la condivisione, ma stiamo abilitando la condivisione degli script per facilitarti il contributo con flussi di lavoro e script alla community. Per maggiori informazioni, consulta i seguenti blog:
Come posso pubblicare nella PowerShell Gallery?
Devi registrare un account nella PowerShell Gallery prima di poter pubblicare i pacchetti nella Galleria. Questo perché la pubblicazione dei pacchetti richiede un NuGetApiKey, che viene fornito al momento della registrazione. Per registrarti, usa il tuo account personale, di lavoro o scolastico per accedere alla PowerShell Gallery. È necessario un processo di registrazione una tantum al momento del primo accesso. Successivamente, il tuo NuGetApiKey è disponibile sulla tua pagina profilo.
Una volta registrato nella Galleria, usa i moduli Publish-Module o Publish-Script per pubblicare il tuo pacchetto nella Galleria. Per maggiori dettagli su come eseguire questi cmdlet, visita la scheda Pubblica o leggi la documentazione Publish-Module e Publish-Script .
Non è necessario registrarsi o accedere alla Galleria per installare o salvare i pacchetti.
Ho ricevuto "Non ha elaborato la richiesta." quando ho provato a pubblicare un pacchetto nella PowerShell Gallery. Che cosa significa?
Il messaggio di errore completo è: "Non è stato processato la richiesta." 'La chiave API specificata è invalida o non ha il permesso di accedere al pacchetto specificato.'. Il server remoto restituiva un errore: (403) Proibito."
Le cause di questo errore sono le seguenti:
- La chiave API specificata è invalida. Assicurati di aver specificato la chiave API valida dal tuo account. Per ottenere la tua chiave API, visualizza la tua pagina profilo.
- Il nome del pacco specificato non è di tua proprietà. Se hai confermato che la tua chiave API è corretta, allora potrebbe già esistere un pacchetto con lo stesso nome di quello che stai cercando di usare. Il pacchetto potrebbe essere stato non elencato dal proprietario, nel qual caso non apparirà nei risultati di ricerca. Per verificare se un pacchetto con lo stesso nome esiste già, apri un browser e accedi alla pagina dettagli del pacchetto:
https://www.powershellgallery.com/packages/<packageName>. Ad esempio, navigando direttamente suhttps://www.powershellgallery.com/packages/pesterti porterà alla pagina dettagli del modulo Pester, che sia non elencata o meno. Se un pacchetto con un nome conflittuale esiste già ed è non elencato, puoi:- Scegli un altro nome per il tuo pacco.
- Contatta i proprietari del pacchetto esistente.
Perché non posso accedere con il mio account personale, ma potevo accedere ieri?
Tieni presente che il tuo account galleria non consente modifiche al tuo alias email principale. Per maggiori informazioni, consulta Microsoft Email Alias.
Perché non vedo tutti i pacchetti galleria quando seleziono tutte le caselle di spunta Categoria nella scheda pacchetti?
Selezionando una casella di spunta per Categoria, stai dicendo "Vorrei vedere tutti i pacchi in questa categoria." Saranno esposti solo i pacchetti nelle categorie selezionate. Quindi, allo stesso modo, selezionando tutte le caselle di spunta Categoria, stai dicendo "Vorrei vedere tutti i pacchetti in qualsiasi categoria." Tuttavia, alcuni pacchetti nella galleria non appartengono a nessuna delle categorie elencate, quindi non appariranno nei risultati. Per vedere tutti i pacchetti nella galleria, deseleziona tutte le categorie o seleziona di nuovo la scheda pacchetti.
Quali sono i requisiti per pubblicare un modulo nella PowerShell Gallery?
Qualsiasi tipo di modulo PowerShell (moduli script, moduli binari o moduli manifest) può essere pubblicato nella galleria. Per pubblicare un modulo, PowerShellGet deve conoscere alcune cose a riguardo: la versione, la descrizione, l'autore e come è concesso in licenza. Queste informazioni vengono lette come parte del processo di pubblicazione dal file manifest del modulo (.psd1), oppure dal valore del parametro LicenseUri del cmdlet Publish-Module. Tutti i moduli pubblicati nella Galleria devono avere manifesti moduli. Qualsiasi modulo che includa le seguenti informazioni nel manifesto può essere pubblicato nella Galleria:
- Version
- Description
- Autore
- Un URI ai termini di licenza del modulo, sia come parte della sezione PrivateData del manifesto, sia nel parametro LicenseUri del cmdlet Publish-Module .
Come posso creare un manifesto modulo formattato correttamente?
Il modo più semplice per creare un manifesto di modulo è eseguire il cmdlet New-ModuleManifest . In PowerShell 5.0 o versioni successive, New-ModuleManifest genera un manifesto modulo correttamente formattato con campi vuoti per metadati utili come ProjectUri, LicenseUri e Tag. Basta compilare gli spazi vuoti, oppure usare il manifesto generato come esempio di formattazione corretta.
Per verificare che tutti i campi di metadati richiesti siano stati correttamente compilati, si utilizza il cmdlet Test-ModuleManifest .
Per aggiornare i campi del file manifest del modulo, usa il cmdlet Update-ModuleManifest .
Quali sono i requisiti per pubblicare una sceneggiatura alla Galleria?
Qualsiasi tipo di script PowerShell (script o workflow) può essere pubblicato nella galleria. Per pubblicare uno script, PowerShellGet deve conoscere alcune cose a riguardo: la versione, la descrizione, l'autore e come è concesso in licenza. Queste informazioni vengono lette come parte del processo di pubblicazione dalla sezione PSScriptInfo del file di script, oppure dal valore del parametro LicenseUri del cmdlet Publish-Script. Tutti gli script pubblicati nella Galleria devono contenere informazioni sui metadati. Qualsiasi script che includa le seguenti informazioni nella sua sezione PSScriptInfo può essere pubblicato nella Galleria:
- Version
- Description
- Autore
- Un URI ai termini di licenza dello script, sia come parte della sezione PSScriptInfo dello script, sia nel parametro LicenseUri del cmdlet Publish-Script .
Come faccio a cercare?
Digita quello che cerchi nella casella di testo. Ad esempio, se vuoi trovare moduli correlati ad Azure SQL, basta digitare "azure sql". Il nostro motore di ricerca cercherà queste parole chiave in tutti i pacchetti pubblicati, inclusi titoli, descrizioni e tra i metadati. Poi, basandosi su un punteggio di qualità ponderato, mostrerà le corrispondenze più vicine. Puoi anche cercare per campo specifico usando la sintassi campo:"value" nella query di ricerca per i seguenti campi:
- Tag
- Funzioni
- Cmdlets
- DscResources
- PowerShellVersion
Quindi, ad esempio, quando cerchi PowerShellVersion:"2.0" verranno visualizzati solo i risultati compatibili con PowerShellVersion 2.0 (basati sul loro modulo/script manifest).
Come posso creare un file di script formattato correttamente?
Il modo più semplice per creare un file script correttamente formattato è eseguire il cmdlet New-ScriptFileInfo . In PowerShell 5.0, New-ScriptFileInfo genera un file script correttamente formattato con campi vuoti per metadati utili come ProjectUri, LicenseUri e Tag. Basta compilare gli spazi vuoti, oppure usare il file script generato come esempio di formattazione corretta.
Per verificare che tutti i campi di metadati richiesti siano stati correttamente compilati, usa il cmdlet Test-ScriptFileInfo .
Per aggiornare i campi dei metadati dello script, usa il cmdlet Update-ScriptFileInfo .
Quali altri tipi di moduli PowerShell esistono?
Il termine modulo PowerShell si riferisce anche ai file che implementano la funzionalità effettiva. I file dei moduli script (.psm1) contengono codice PowerShell. I file binari dei moduli (.dll) contengono codice compilato.
Ecco un modo per pensarci: la cartella che racchiude il modulo è la cartella del modulo. La cartella del modulo può contenere un manifesto del modulo (.psd1) che descrive il contenuto della cartella. I file che effettivamente svolgono il lavoro sono i file del modulo script (.psm1) e i file del modulo binario (.dll). Le risorse DSC si trovano in una sottocartella specifica e sono implementate come file di moduli script o file di moduli binari.
Tutti i moduli nella Galleria contengono manifesti moduli, e la maggior parte di questi moduli contiene file script o file binari moduli. Il termine modulo può essere confuso a causa di questi diversi significati. Salvo diversa indicazione esplicita, tutti gli usi della parola modulo in questa pagina si riferiscono alla cartella modulo contenente questi file.
Come si collega PackageManagement a PowerShellGet? (Risposta di alto livello)
PackageManagement è un'interfaccia comune per lavorare con qualsiasi gestore di pacchetti. Alla fine, che tu abbia a che fare con moduli PowerShell, MSI, gemme Ruby, pacchetti NuGet o moduli Perl, dovresti riuscire a usare i comandi di PackageManagement (Find-Package e Install-Package) per trovarli e installarli. PackageManagement fa questo avendo un provider di pacchetti per ogni gestore di pacchetti che si collega a PackageManagement. I fornitori fanno tutto il lavoro vero e proprio; Recuperano i contenuti dai repository e installano i contenuti localmente. Spesso, i fornitori di pacchetti semplicemente avvolgono gli strumenti di gestione dei pacchetti esistenti per un dato tipo di pacchetto.
PowerShellGet è il gestore di pacchetti per i pacchetti PowerShell. Esiste un fornitore di pacchetti PSModule che espone la funzionalità di PowerShellGet tramite PackageManagement. Per questo motivo, puoi eseguire Install-Module oppure Install-Package -Provider PSModule installare un modulo dalla PowerShell Gallery.
Alcune funzionalità di PowerShellGet, inclusi Update-Module e Publish-Module, non possono essere accessibili tramite comandi PackageManagement.
In sintesi, PowerShellGet si concentra esclusivamente sull'offrire un'esperienza premium di gestione dei pacchetti per i contenuti PowerShell. PackageManagement si concentra sull'esposizione di tutte le esperienze di gestione dei pacchetti attraverso un unico insieme generale di strumenti. Se trovi questa risposta insoddisfacente, c'è una lunga risposta in fondo a questo documento, nella sezione Come si collega effettivamente PackageManagement a PowerShellGet? .
Per maggiori informazioni, visita la pagina del progetto PackageManagement.
Come si collega NuGet a PowerShellGet?
La PowerShell Gallery è una versione modificata della NuGet Gallery. PowerShellGet utilizza il provider NuGet per lavorare con repository basati su NuGet come PowerShell Gallery.
Puoi usare PowerShellGet contro qualsiasi repository NuGet o condivisione file valida. Basta aggiungere il repository eseguendo il cmdlet Register-PSRepository .
Significa che posso usare NuGet.exe per lavorare con la Galleria?
Yes.
In che modo PackageManagement si collega effettivamente a PowerShellGet? (Dettagli tecnici)
Sotto il cofano, PowerShellGet sfrutta fortemente l'infrastruttura PackageManagement.
Nel layer cmdlet di PowerShell, Install-Module è in realtà un sottile wrapper attorno a Install-Package -Provider PSModule.
A livello del provider di pacchetti PackageManagement, il provider di pacchetti PSModule effettivamente richiama altri fornitori di pacchetti PackageManagement. Ad esempio, quando lavori con gallerie basate su NuGet (come la PowerShell Gallery), il provider del pacchetto PSModule utilizza il NuGet Package Provider per lavorare con il repository.
Figura 1: Architettura PowerShellGet
Cosa è necessario per far funzionare PowerShellGet?
In generale consigliamo di scegliere l'ultima versione del modulo PowerShellGet (nota che richiede .NET 4.5).
Il modulo PowerShellGet richiede PowerShell 3.0 o versioni successive.
Pertanto, PowerShellGet richiede uno dei seguenti sistemi operativi:
- Windows 10
- Windows 8.1 Pro
- Windows 8.1 Enterprise
- Windows 7 SP1
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2008 R2 SP1
PowerShellGet richiede anche .NET Framework 4.5 o superiore. Per altre informazioni, vedere Installare .NET Framework per sviluppatori.
È possibile riservare i nomi per i pacchetti che verranno pubblicati in futuro?
Non è possibile accovacciare i nomi dei pacchetti. Se pensi che un pacco esistente abbia preso il nome che si adatta meglio al tuo pacco, prova a contattare il proprietario del pacchetto. Se non hai ricevuto risposta entro un paio di settimane, puoi contattare l'assistenza e il team di PowerShell Gallery si occuperà della questione.
Come posso rivendicare la proprietà dei pacchi?
Dai un'occhiata a Managing Package Owners su PowerShellGallery.com per i dettagli.
Come posso gestire un proprietario di un pacco che sta violando la mia licenza di pacchetto?
Incoraggiamo la comunità PowerShell a collaborare per risolvere eventuali dispute che possano sorgere tra i proprietari dei pacchetti e quelli di altri pacchetti. Abbiamo ideato un processo di risoluzione delle controversie che vi chiediamo di seguire prima che PowerShellGallery.com gli amministratori intervengano.