Często zadawane pytaniaFrequently Asked Questions

Co to jest moduł programu PowerShell?What is a PowerShell module?

Moduł programu PowerShell to do ponownego użycia pakietu zawierającego niektóre funkcje programu PowerShell.A PowerShell module is a reusable package containing some PowerShell functionality. Wszystko, co w programie PowerShell (funkcje, zmienne, zasoby DSC, itp.) można spakować w modułach.Everything in PowerShell (functions, variables, DSC resources, etc.) can be packaged in modules. Zazwyczaj moduły są foldery zawierające określonych typów plików przechowywanych w określonej ścieżce.Typically, modules are folders containing specific types of files stored on a specific path. Istnieje kilka różnych typów modułów programu PowerShell tam.There are a few different types of PowerShell modules out there.

Co to jest skrypt programu PowerShell?What is a PowerShell script?

Skrypt programu PowerShell jest serię poleceń, które są przechowywane w pliku .ps1, aby umożliwić udostępnianie i ponowne użycie.A PowerShell script is a series of commands that are stored in a .ps1 file to enable reuse and sharing. Przepływy pracy programu PowerShell są również skrypty programu PowerShell, które opisują zestaw zadań i podać sekwencji zadań.PowerShell workflows are also PowerShell scripts, which outline a set of tasks and provide sequencing for those tasks. Aby uzyskać więcej informacji, odwiedź rozpoczęcie korzystania z przepływu pracy programu PowerShell.For more information, please visit Getting Started with PowerShell Workflow.

Czym różnią się skryptów programu PowerShell z modułów programu PowerShell?How are PowerShell Scripts different from PowerShell Modules?

Moduły są zazwyczaj większą do udostępniania, ale jest włączane, udostępnianie skrypt, aby ułatwić współtworzyć przepływami pracy a skryptami społeczności.Modules are generally better for sharing, but we are enabling script sharing to make it easier for you to contribute workflows and scripts to the community. Aby uzyskać więcej informacji można znaleźć na następujących blogach:For more information, see the following blogs:

Konto należy zarejestrować w galerii programu PowerShell, zanim będzie można opublikować pakietów do galerii.You must register an account in the PowerShell Gallery before you can publish packages to the Gallery. Jest to spowodowane publikowania pakietów wymaga NuGetApiKey, która jest dostarczana w chwili rejestracji.This is because publishing packages requires a NuGetApiKey, which is provided upon registration. Aby się zarejestrować, użyj osobistego, konta służbowego do logowania się w galerii programu PowerShell.To register, use your personal, work, or school account to sign in to the PowerShell Gallery. Po zalogowaniu się po raz pierwszy, proces rejestracji jednorazowy jest wymagany.A one-time registration process is required when you sign in for the first time. Później Twoje NuGetApiKey jest dostępna na stronie profilu.Afterwards, your NuGetApiKey is available on your profile page.

Po zarejestrowaniu się w galerii, użyj Publish-Module lub Publish-Script poleceń cmdlet do opublikowania pakietu do galerii.Once you have registered in the Gallery, use the Publish-Module or Publish-Script cmdlets to publish your package to the Gallery. Aby uzyskać więcej informacji na temat sposobu uruchamiania tych poleceń cmdlet można znaleźć na karcie publikowanie lub przeczytaj Publish-Module i Publish-Script dokumentacji.For more details on how to run these cmdlets, visit the Publish tab, or read the Publish-Module and Publish-Script documentation.

Nie musisz zarejestrować się lub zaloguj się do galerii, aby zainstalować lub zapisać pakietów.You do not need to register or sign in to the Gallery to install or save packages.

Ten błąd może wystąpić z następujących powodów:This error can occur for the following reasons:

  • Określony klucz interfejsu API jest nieprawidłowa.The specified API key is invalid. Upewnij się, że określono prawidłowego klucza interfejsu API z Twojego konta.Ensure that you have specified the valid API key from your account. Aby uzyskać klucz interfejsu API, wyświetlać stronę profilu.To get your API key, view your profile page.
  • Nazwa pakietu określona właścicielem nie jest użytkownik.The specified package name is not owned by you. Jeśli potwierdzeniu, że klucz interfejsu API jest poprawna, a następnie może już istnieć pakiet o tej samej nazwie, który próbujesz użyć.If you have confirmed that your API key is correct, then there may already exist a package with the same name as the one you are trying to use. Pakiet zostały nieznajdujące się na liście przez właściciela, w tym przypadku nie będzie wyświetlany w żadnych wyników wyszukiwania.The package may have been unlisted by the owner, in which case it will not appear in any search results. Aby ustalić, czy pakiet o tej samej nazwie już istnieje, otwórz przeglądarkę i przejdź do strony szczegółów pakietu: https://www.powershellgallery.com/packages/<packageName>.To determine if a package with the same name already exists, open a browser and navigate to the package's details page: https://www.powershellgallery.com/packages/<packageName>. Na przykład, przechodząc bezpośrednio do https://www.powershellgallery.com/packages/pester spowoduje przejście do strony szczegółów modułu usług Pester, czy jest ono nieznajdujące się na liście, czy nie.For example, navigating directly to https://www.powershellgallery.com/packages/pester will take you to the Pester module's details page, whether it is unlisted or not. Jeśli pakiet o nazwie powodujące konflikt już istnieje i jest nieobecne na liście, możesz to zrobić:If a package with a conflicting name already exists and is unlisted, you can:
    • Wybierz inną nazwę dla pakietu.Select another name for your package.
    • Skontaktuj się z właścicielami istniejącego pakietu.Contact the owners of the existing package.

Dlaczego nie można zarejestrować się przy użyciu osobistego konta, ale można zarejestrować się w wczoraj?Why can't I sign in with my personal account, but I could sign in yesterday?

Należy pamiętać, Twoje konto galerii nie obsługuje zmiany zmiany alias podstawowy adres e-mail.Please be aware that your gallery account does not accommodate changes to your primary email alias. Aby uzyskać więcej informacji, zobacz aliasy poczty E-mail firmy Microsoft.For more information, see Microsoft Email Aliases.

Zaznaczając pole wyboru kategorii, są informacją "Czy chcesz zobaczyć wszystkie pakiety z tej kategorii."By selecting a Category checkbox, you are stating "I would like to see all packages in this category." Wyświetlane są tylko pakiety z wybranych kategorii.Only the packages in the selected categories will be displayed. Dlatego podobnie zaznaczenie wszystkich pól wyboru kategorii, możesz są z informacją "Czy chcesz zobaczyć wszystkie pakiety w dowolnej kategorii."So similarly, by selecting all the Category checkboxes, you are stating "I would like to see all packages in any category." Jednak niektóre pakiety w galerii nie należą do żadnej z kategorii na liście, dzięki czemu będą widoczne w wynikach.But some packages in the gallery do not belong to any of the categories listed, so they will not appear in the results. Aby wyświetlić wszystkie pakiety w galerii, usuń zaznaczenie wszystkich kategorii lub ponownie wybierz kartę pakietów.To see all packages in the gallery, uncheck all the Categories, or select the packages tab again.

Dowolny rodzaj modułu programu PowerShell (moduły skryptów, moduły binarne lub moduły manifestu) mogą być publikowane w galerii.Any kind of PowerShell module (script modules, binary modules, or manifest modules) can be published to the gallery. Aby opublikować modułu, PowerShellGet musi wiedzieć, kilka kwestii, o nim — wersji, opis, autora i jak jest licencjonowana.To publish a module, PowerShellGet needs to know a few things about it - the version, description, author, and how it is licensed. Informacja ta jest do odczytu w ramach procesu publikowania z manifestu modułu pliku (psd1), lub wartość Publish-Module cmdlet LicenseUri parametru.This information is read as part of the publishing process from the module manifest (.psd1) file, or from the value of the Publish-Module cmdlet's LicenseUri parameter. Wszystkie moduły, opublikowane w galerii, musi mieć manifesty modułu.All modules published to the Gallery must have module manifests. Każdy moduł, który zawiera następujące informacje w swoim manifeście mogą być publikowane w galerii:Any module that includes the following information in its manifest can be published to the Gallery:

  • WersjaVersion
  • OpisDescription
  • AutorAuthor
  • Identyfikator URI do postanowień licencyjnych w module, albo w ramach PrivateData sekcji manifestu lub w LicenseUri parametru Publish-Module polecenia cmdlet.A URI to the license terms of the module, either as part of the PrivateData section of the manifest, or in the LicenseUri parameter of the Publish-Module cmdlet.

Jak utworzyć manifest poprawnie sformatowany modułu?How do I create a correctly-formatted module manifest?

Najprostszym sposobem utworzenia manifestu modułu jest uruchomienie New ModuleManifest polecenia cmdlet.The easiest way to create a module manifest is to run the New-ModuleManifest cmdlet. W programie PowerShell 5.0 lub nowszego, New-ModuleManifest generuje manifestu modułu poprawnie sformatowany za pomocą puste pola, aby uzyskać przydatne metadane, takie jak ProjectUri, LicenseUri, i tagi.In PowerShell 5.0 or newer, New-ModuleManifest generates a correctly-formatted module manifest with blank fields for useful metadata like ProjectUri, LicenseUri, and Tags. Po prostu Wypełnij puste wartości lub użyć wygenerowanego manifestu, na przykład prawidłowe formatowanie.Simply fill in the blanks, or use the generated manifest as an example of correct formatting.

Aby sprawdzić, czy wszystkie wymagane pola metadanych została prawidłowo wypełniona, użyj ModuleManifest testu polecenia cmdlet.To verify that all required metadata fields have been properly filled, use the Test-ModuleManifest cmdlet.

Aby zaktualizować pola pliku manifestu modułu, należy użyć ModuleManifest aktualizacji polecenia cmdlet.To update the module manifest file fields, use the Update-ModuleManifest cmdlet.

Dowolny skrypt programu PowerShell (skrypty lub przepływów pracy) mogą być publikowane w galerii.Any kind of PowerShell script (scripts or workflows) can be published to the gallery. Aby opublikować skryptu, PowerShellGet musi wiedzieć, kilka kwestii, o nim — wersji, opis, autora i jak jest licencjonowana.To publish a script, PowerShellGet needs to know a few things about it - the version, description, author, and how it is licensed. Informacja ta jest do odczytu w ramach procesu publikowania z pliku skryptu PSScriptInfo sekcji, lub wartość Publish-Script cmdlet LicenseUri parametru.This information is read as part of the publishing process from the script file's PSScriptInfo section, or from the value of the Publish-Script cmdlet's LicenseUri parameter. Wszystkie skrypty, opublikowane w galerii, musi mieć informacji o metadanych.All scripts published to the Gallery must have metadata information. Dowolny skrypt, który zawiera następujące informacje w sekcji PSScriptInfo mogą być publikowane w galerii:Any script that includes the following information in its PSScriptInfo section can be published to the Gallery:

  • WersjaVersion
  • OpisDescription
  • AutorAuthor
  • Identyfikator URI postanowienia licencyjne dotyczące skryptu, albo w ramach PSScriptInfo sekcji skryptu lub w LicenseUri parametru Publish-Script polecenia cmdlet.A URI to the license terms of the script, either as part of the PSScriptInfo section of the script, or in the LicenseUri parameter of the Publish-Script cmdlet.

Wpisz, czego szukasz w polu tekstowym.Type what you are looking for in the text box. Na przykład jeśli chcesz znaleźć moduły, które są powiązane z usługi Azure SQL, po prostu wpisz "sql platformy azure".For example, if you want to find modules that are related to Azure SQL, just type "azure sql". Naszego aparatu wyszukiwania będzie szukał tych słów kluczowych w wszystkie opublikowane pakiety, w tym tytuły i opisy i w ramach metadanych.Our search engine will look for those keywords in all published packages, including titles, descriptions and across metadata. Następnie na podstawie ważonej jakości wyniku, wyświetli najbliższego dopasowań.Then, based on a weighted quality score, it will display the closest matches. Możesz również wyszukiwać według określonego pola za pomocą pola: "wartość" składni w zapytaniu wyszukiwania dla następujących pól:You can also search by specific field using field:"value" syntax in the search query for the following fields:

  • TagiTags
  • FunkcjeFunctions
  • Polecenia cmdletCmdlets
  • DscResourcesDscResources
  • PowerShellVersionPowerShellVersion

Tak więc, na przykład podczas wyszukiwania PowerShellVersion: "2.0" tylko wyniki, które są zgodne z 2.0 PowerShellVersion (oparte na manifeście modułu skryptu) zostaną wyświetlone.So, for example, when you search for PowerShellVersion:"2.0" only results that are compatible with PowerShellVersion 2.0 (based on their module/script manifest) will be displayed.

Jak utworzyć plik skryptu poprawnie sformatowany?How do I create a correctly-formatted script file?

Najprostszym sposobem utworzenia pliku skryptu poprawnie sformatowana, jest uruchomienie New ScriptFileInfo polecenia cmdlet.The easiest way to create a properly-formatted script file is to run the New-ScriptFileInfo cmdlet. W programie PowerShell 5.0, New-ScriptFileInfo generuje plik skryptu poprawnie sformatowany za pomocą pustych pól dla przydatne metadane, takie jak ProjectUri, LicenseUri, i tagi .In PowerShell 5.0, New-ScriptFileInfo generates a correctly-formatted script file with blank fields for useful metadata like ProjectUri, LicenseUri, and Tags. Po prostu Wypełnij puste wartości lub użyć pliku skryptu wygenerowanego na przykład prawidłowe formatowanie.Simply fill in the blanks, or use the generated script file as an example of correct formatting.

Aby sprawdzić, czy wszystkie wymagane pola metadanych została prawidłowo wypełniona, użyj ScriptFileInfo testu polecenia cmdlet.To verify that all required metadata fields have been properly filled, use the Test-ScriptFileInfo cmdlet.

Aby zaktualizować pola metadanych skryptu, użyj ScriptFileInfo aktualizacji polecenia cmdlet.To update the script metadata fields, use the Update-ScriptFileInfo cmdlet.

Jakie inne rodzaje modułów programu PowerShell?What other types of PowerShell Modules exist?

Moduł PowerShell termin odnosi się także do plików, które implementują funkcjonalność rzeczywiste.The term PowerShell module also refers to the files that implement actual functionality. Pliki modułu skryptu (.psm1) zawierają kod programu PowerShell.Script module files (.psm1) contain PowerShell code. Pliki binarne modułu (.dll) zawierają kod skompilowany.Binary module files (.dll) contain compiled code.

W tym miejscu jest jednym ze sposobów myślenia o nim: folder, który hermetyzuje modułu jest folderem modułu.Here is one way to think about it: the folder that encapsulates the module is the module folder. Folder modułu może zawierać manifest modułu (psd1), który opisuje zawartość tego folderu.The module folder can contain a module manifest (.psd1) that describes the contents of the folder. Pliki, które rzeczywiście wykonują pracę są pliki modułu skryptu (.psm1) i pliki binarne modułu (.dll).The files that actually do the work are the script module files (.psm1) and the binary module files (.dll). Zasoby DSC znajdują się w określonym folderze podrzędnych i są implementowane jako pliki modułów skryptów lub pliki binarne modułu.DSC resources are located in a specific sub-folder, and are implemented as script module files or binary module files.

Wszystkie moduły w galerii zawierać manifesty modułu, a większość z tych modułów zawierają pliki modułów skryptów lub pliki binarne modułu.All of the modules in the Gallery contain module manifests, and most of these modules contain script module files or binary module files. Ze względu na te różne znaczenie modułu terminu może być mylące.The term module can be confusing because of these different meanings. O ile nie zaznaczono inaczej, wszystkie przypadki użycia modułu programu word na tej stronie można znaleźć folderu modułu zawierającego te pliki.Unless explicitly stated otherwise, all uses of the word module on this page refer to the module folder containing these files.

Jaki jest związek między PackageManagement PowerShellGet?How does PackageManagement relate to PowerShellGet? (Wysokiego poziomu odpowiedzi)(High Level Answer)

Funkcja PackageManagement jest wspólny interfejs do pracy z dowolnym Menedżera pakietów.PackageManagement is a common interface for working with any package manager. Po pewnym czasie czy jesteś zajmujących modułów programu PowerShell, MSI, klejnoty języka Ruby, pakietów NuGet lub moduły języka Perl, można używać poleceń firmy PackageManagement (Znajdź pakiet i Install-Package), aby znaleźć i zainstalować je.Eventually, whether you're dealing with PowerShell modules, MSIs, Ruby gems, NuGet packages, or Perl modules, you should be able to use PackageManagement's commands (Find-Package and Install-Package) to find and install them. Funkcja PackageManagement robi to przez dostawcę pakietu dla każdego Menedżera pakietów, które podłącza się do funkcji PackageManagement.PackageManagement does this by having a package provider for each package manager that plugs into PackageManagement. Dostawców przyspieszające rzeczywista praca; Pobierz zawartość z repozytoriów i instalowanie zawartości lokalnie.Providers do all of the actual work; they fetch content from repositories, and install the content locally. Często dostawców pakietu po prostu otacza istniejące narzędzia Menedżera pakietów dla typu danego pakietu.Often, package providers simply wrap around the existing package manager tools for a given package type.

Moduł PowerShellGet to Menedżer pakietów dla pakietów programu PowerShell.PowerShellGet is the package manager for PowerShell packages. Brak dostawcy pakietu PSModule, który udostępnia funkcje PowerShellGet za pomocą modułu PackageManagement.There is a PSModule package provider that exposes PowerShellGet functionality through PackageManagement. W związku z tym można uruchomić Install-Module lub Install-Package-PSModule dostawcy, aby zainstalować moduł z galerii programu PowerShell.Because of this, you can either run Install-Module or Install-Package -Provider PSModule to install a module from the PowerShell Gallery. Niektórych funkcji modułu PowerShellGet, w tym aktualizacji modułu i Publish-Module, nie są dostępne za pomocą modułu PackageManagement poleceń.Certain PowerShellGet functionality, including Update-Module and Publish-Module, cannot be accessed through PackageManagement commands.

Podsumowanie PowerShellGet jest wyłącznie koncentruje się na o środowisko zarządzania pakiet w wersji premium dla zawartości programu PowerShell.In summary, PowerShellGet is solely focused on having a premium package management experience for PowerShell content. Funkcja PackageManagement koncentruje się na udostępnianie wszystkich pakietów środowiska zarządzania za pośrednictwem jednego ogólnego zestawu narzędzi.PackageManagement is focused on exposing all package management experiences through one general set of tools. Odnalezienie unsatisfying tej odpowiedzi jest długi odpowiedzi w dolnej części tego dokumentu w jak PackageManagement faktycznie jest związek z modułu PowerShellGet? sekcji.If you find this answer unsatisfying, there is a long answer at the bottom of this document, in the How does PackageManagement actually relate to PowerShellGet? section.

Aby uzyskać więcej informacji, odwiedź strony projektu PackageManagement.For more information, please visit the PackageManagement project page.

Jaki jest związek między NuGet modułu PowerShellGet?How does NuGet relate to PowerShellGet?

Galeria programu PowerShell to zmodyfikowana wersja galerii pakietów NuGet.The PowerShell Gallery is a modified version of the NuGet Gallery. Moduł PowerShellGet używa dostawcy NuGet do pracy z NuGet na podstawie repozytoriów, takich jak Galeria programu PowerShell.PowerShellGet uses NuGet provider to work with NuGet based repositories like the PowerShell Gallery.

Możesz używać modułu PowerShellGet, względem wszystkie prawidłowe NuGet repozytorium lub w udziale plików.You can use PowerShellGet against any valid NuGet repository or file share. Po prostu musisz dodać repozytorium, uruchamiając Register-PSRepository polecenia cmdlet.You simply need to add the repository by running the Register-PSRepository cmdlet.

Tak.Yes.

Jaki związek PackageManagement faktycznie między PowerShellGet?How does PackageManagement actually relate to PowerShellGet? (Szczegóły techniczne)(Technical Details)

Kulisy PowerShellGet intensywnie korzysta z infrastruktury PackageManagement.Under the hood, PowerShellGet heavily leverages PackageManagement infrastructure.

W warstwie polecenia cmdlet programu PowerShell Install-Module jest faktycznie alokowania elastycznego otokę Install-Package-PSModule dostawcy.At the PowerShell cmdlet layer, Install-Module is actually a thin wrapper around Install-Package -Provider PSModule.

W warstwie dostawcy PackageManagement pakietu Dostawca pakietu PSModule rzeczywiście wywoła innych dostawców rozwiązań w pakiecie PackageManagement.At the PackageManagement package provider layer, the PSModule package provider actually calls into other PackageManagement package providers. Na przykład podczas pracy oparte na pakietach NuGet galerie (na przykład w galerii programu PowerShell), Dostawca pakietu PSModule używa dostawcy pakietu NuGet do pracy z repozytorium.For example, when you are working with NuGet-based galleries (such as the PowerShell Gallery), the PSModule package provider uses the NuGet Package Provider to work with the repository.

Architektura modułu PowerShellGet

Rysunek 1: Architektura modułu PowerShellGetFigure 1: PowerShellGet Architecture

Co to jest wymagane do uruchamiania modułu PowerShellGet?What is required to run PowerShellGet?

Ogólnie rzecz biorąc zalecamy pobranie najnowszej wersji modułu PowerShellGet (należy zauważyć, że wymaga platformy .NET 4.5).In general we recommend picking the latest version of PowerShellGet module (note that it requires .NET 4.5).

PowerShellGet moduł wymaga programu PowerShell w wersji 3.0 lub nowszej.The PowerShellGet module requires PowerShell 3.0 or newer.

W związku z tym PowerShellGet wymaga jednej z następujących systemów operacyjnych:Therefore, PowerShellGet requires one of the following operating systems:

  • 10 systemu WindowsWindows 10
  • Windows 8.1 ProWindows 8.1 Pro
  • Windows 8.1 EnterpriseWindows 8.1 Enterprise
  • Windows 7 z dodatkiem SP1Windows 7 SP1
  • Windows Server 2016Windows Server 2016
  • Windows Server 2012 R2Windows Server 2012 R2
  • Windows Server 2008 R2 z dodatkiem SP1Windows Server 2008 R2 SP1

Moduł PowerShellGet wymaga również programu .NET Framework 4.5 lub nowszej.PowerShellGet also requires .NET Framework 4.5 or above. Możesz zainstalować program .NET Framework 4.5 lub nowszy z tutaj.You can install .NET Framework 4.5 or above from here.

Czy jest możliwe do zarezerwowania nazwy pakietów, które mają zostać opublikowane w przyszłości?Is it possible to reserve names for packages that will be published in future?

Nie jest możliwe nazwy wpuszczana w podłogę pakietów.It is not possible to squat package names. Jeśli uważasz, że istniejący pakiet miało nazwę, która odpowiada pakietu więcej, spróbuj skontaktować się z właścicielem pakietu.If you feel that an existing package has taken the name which suits your package more, try contacting the owner of the package. Jeśli nie otrzymasz odpowiedzi w ciągu kilku tygodni, możesz się z pomocą techniczną i zespołu galerii programu PowerShell będzie wyglądał w nim.If you didnt get response within a couple of weeks, you can contact support and the PowerShell Gallery team will look in to it.

Jak oświadczenia własności dla pakietów?How do I claim ownership for packages?

Zapoznaj się z Zarządzanie właścicieli pakietu na PowerShellGallery.com Aby uzyskać szczegółowe informacje.Check out Managing Package Owners on PowerShellGallery.com for details.

Sposób postępowania z właścicielem pakietu, który narusza licencję pakietuHow do I deal with a package owner who is violating my package license?

Firma Microsoft zachęca do społeczności programu PowerShell, aby współpracują ze sobą w celu rozwiązania wszelkich sporów, które mogą wystąpić między właścicieli pakietu i innych pakietów.We encourage the PowerShell community to work together to resolve any disputes that may arise between package owners and the owners of other packages. Firma Microsoft ma specjalnie proces rozstrzygania sporów , poprosimy Cię, które należy wykonać przed intercede PowerShellGallery.com administratorów.We have crafted a dispute resolution process that we ask you to follow before PowerShellGallery.com administrators intercede.