Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El módulo Microsoft.PowerShell.PSResourceGet funciona con repositorios de paquetes NuGet y almacenes de archivos locales. En general, los cmdlets deben funcionar con cualquier repositorio de artefactos que admita el protocolo NuGet. Sin embargo, no todos los repositorios de NuGet admiten todas las características de PSResourceGet.
Los siguientes repositorios se han probado con PSResourceGet.
Galería de PowerShell
La Galería de PowerShell es el repositorio predeterminado para PSResourceGet. La Galería es un repositorio de NuGet que usa el protocolo NuGet v2.
No necesita credenciales para buscar, descargar o instalar paquetes desde la Galería de PowerShell. Debe crear una cuenta y una clave de API para publicar paquetes en la Galería de PowerShell. Para obtener más información, consulte Creación y publicación de un elemento.
La Galería de PowerShell admite todas las características de PSResourceGet.
NuGet.org
NuGet.org es un host público de paquetes NuGet que usan millones de desarrolladores de .NET y .NET Core cada día. NuGet.org proporciona un repositorio NuGet que usa el protocolo NuGet v3.
Use el siguiente comando para registrar NuGet.org como un repositorio de PSResource:
$params = @{
Name = 'NuGetGallery'
Uri = 'https://api.nuget.org/v3/index.json'
}
Register-PSResourceRepository @params
No necesita credenciales para buscar, descargar o instalar paquetes desde NuGet.org. Debe crear una cuenta y una clave de API para publicar paquetes en NuGet.org. Para obtener más información sobre cómo obtener una clave de API de NuGet, consulte Inicio rápido: Creación y publicación de un paquete NuGet.
NuGet.org limitaciones
El módulo Microsoft.PowerShell.PSResourceGet no admite los siguientes escenarios para NuGet.org repositorios:
- Búsqueda de comodines por nombre
Find-PSResource -Name *Find-PSResource -Name PartialName*
- Buscar por nombre de comando
Find-PSResource -Command CommandName
- Búsqueda por nombre de recurso de DSC
Find-PSResource -DscResourceName ResourceName
Publicar en NuGet.org
No es necesario usar el parámetro Credential del Publish-PSResource cmdlet, pero debe usar el parámetro ApiKey . Puede proporcionar credenciales, pero NuGet.org no las usa. Para crear una clave de API, consulte Publicación de paquetes NuGet. Por ejemplo:
$publishPSResourceSplat = @{
Path = 'D:\MyModule'
Repository = 'AzArtifactFeed'
ApiKey = '<nuget-api-key>'
}
Publish-PSResource @publishPSResourceSplat
Precaución
Nunca debe utilizar credenciales de texto no cifrado en un script. Utilice el módulo SecretManagement u otros métodos para almacenar y recuperar sus credenciales de forma segura. Para obtener más información, consulte Información general sobre los módulos SecretManagement y SecretStore.
Azure Artifacts
Azure Artifacts es una característica de Azure DevOps. Azure Artifacts permite a los desarrolladores compartir su código de forma eficaz y administrar todos sus paquetes desde un solo lugar. Con Azure Artifacts, los desarrolladores pueden publicar paquetes en sus fuentes y compartirlos en el mismo equipo, entre organizaciones e incluso públicamente.
Azure Artifacts admite el protocolo NuGet v3. Los URI de fuente de Azure Artifacts usan el siguiente formato:
https://dev.azure.com/<organization-name>/<project-name>/_packaging/<feed-name>/v3/index.json
Sustituya los valores de marcador de posición por los nombres de la organización, el proyecto y el feed. Por ejemplo, use el siguiente comando para registrar una fuente de Azure Artifacts como un repositorio de PSResource:
$params = @{
Name = 'MyAdoFeed'
Uri = 'https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json'
}
Register-PSResourceRepository @params
Azure DevOps permite crear fuentes públicas o privadas para los artefactos de Azure. No necesita credenciales para buscar, descargar o instalar paquetes desde una fuente pública de Azure Artifacts. Para publicar artefactos o acceder a feeds privados, debe tener una cuenta y una clave de API. Para obtener más información sobre cómo obtener una clave de API, consulte Conectarse a una fuente como un repositorio de PowerShell.
PSResourceGet v1.2.0-preview5 añade soporte para Azure Artifacts Credential Provider. Para más información, consulte Utilizar el proveedor de credenciales Azure Artifacts con fuentes Azure Artifacts.
Limitaciones de Azure Artifacts
El módulo Microsoft.PowerShell.PSResourceGet no admite los siguientes escenarios para los repositorios de Azure Artifacts:
- Búsqueda de comodines por nombre
Find-PSResource -Name '*'Find-PSResource -Name 'PartialName*'
- Búsqueda por etiqueta
Find-PSResource -Tag compute
- Buscar por nombre de comando
Find-PSResource -Command CommandName
- Búsqueda por nombre de recurso de DSC
Find-PSResource -DscResourceName ResourceName
Publicación en Azure Artifacts
Debe usar los parámetros Credential y ApiKey del Publish-PSResource cmdlet para publicar paquetes en una fuente de Azure Artifacts. La credencial debe ser un token de acceso personal (PAT) que tenga el ámbito Empaquetado (lectura, escritura y administración ). Para más información, consulte Uso de fuentes de Azure Artifacts como repositorio privado de PowerShell. El valor del parámetro ApiKey no es importante. Puede ser cualquier cadena arbitraria, pero debe incluirse. Por ejemplo:
$patToken = ConvertTo-SecureString -String '<personal-access-token>' -AsPlainText -Force
$Credential = [System.Management.Automation.PSCredential]::new('<username>', $patToken)
$publishPSResourceSplat = @{
Path = 'D:\MyModule'
Repository = 'AzArtifactFeed'
ApiKey = 'AzureDevOps'
Credential = $Credential
}
Publish-PSResource @publishPSResourceSplat
Para este ejemplo <personal-access-token> es el token que creó para la publicación.
<username> es el nombre de usuario de Azure DevOps.
Precaución
Nunca debe utilizar credenciales de texto no cifrado en un script. Utilice el módulo SecretManagement u otros métodos para almacenar y recuperar sus credenciales de forma segura. Para obtener más información, consulte Información general sobre los módulos SecretManagement y SecretStore.
Azure Container Registry (Registro de Contenedores de Azure)
Azure Container Registry (ACR) permite compilar, almacenar y administrar imágenes y artefactos de contenedor en un registro privado para todos los tipos de implementaciones de contenedores. La versión 1.1.0-preview.1 del módulo Microsoft.PowerShell.PSResourceGet agrega compatibilidad con los registros de contenedor de Azure como repositorio de PSResource.
Los repositorios basados en ACR son repositorios privados y requieren credenciales para el acceso. Los usuarios del repositorio deben tener los permisos necesarios para acceder al repositorio. El usuario debe tener ACRPull permisos para obtener recursos y ACRPush permisos para publicar recursos. Para obtener más información, consulte Roles y permisos del Registro.
Para registrar un repositorio de ACR, debe conocer el nombre del LoginServer del ACR. Use los siguientes comandos para registrar un repositorio de ACR como repositorio de PSResource.
$myAcr = Get-AzContainerRegistry -Name myAcr
$acrUrl = "https://$($myAcr.LoginServer)"
Register-PSResourceRepository -Name ACRDemoRepo -Uri $acrUrl
Después de registrar el repositorio, la primera vez que realice una operación en el repositorio registrado en una nueva sesión, se le pedirá que inicie sesión.
Uso del repositorio de ACR
El uso del repositorio basado en ACR es similar al uso de otros repositorios. Puede buscar recursos, instalar recursos y publicar recursos. La primera vez que realice una operación en el repositorio registrado en una nueva sesión, se le pedirá que inicie sesión. Para obtener ejemplos más detallados de uso de ACR, consulte Uso de repositorios de ACR con PSResourceGet.
Limitaciones de ACR
El módulo Microsoft.PowerShell.PSResourceGet no admite los siguientes escenarios para los repositorios de ACR:
- Buscar por valor de etiqueta
Find-PSResource -Tag TagValue -Repository ACRDemoRepo
- Buscar por comando
Find-PSResource -Command CommandName -Repository ACRDemoRepo
- Buscar por nombre de recurso de DSC
Find-PSResource -DscResourceName ResourceName -Repository ACRDemoRepo
Registro de artefactos de Microsoft (MAR)
MAR es un registro público que alberga los artefactos oficiales de Microsoft, como las imágenes de contenedores. MAR mejora la seguridad al garantizar que solo Microsoft pueda publicar paquetes oficiales, lo que elimina riesgos como la usurpación de nombres. También mejora la integridad de la cadena de suministro de software al ofrecer una mayor transparencia y control sobre la procedencia de los artefactos.
Use los siguientes comandos para registrar el repositorio de MAR como repositorio de PSResource.
$mcrUrl = 'https://mcr.microsoft.com'
Register-PSResourceRepository -Name MAR -Uri $mcrUrl -ApiVersion ContainerRegistry
Después de registrar el repositorio, puede usarlo como cualquier otro repositorio basado en ACR.
La compatibilidad con MAR se agregó en Microsoft.PowerShell.PSResourceGet v1.1.1.
Limitaciones de MAR
El repositorio MAR tiene las mismas limitaciones que los repositorios ACR. El MAR es de solo lectura y no admite la publicación de paquetes.
Paquetes de GitHub
GitHub Packages es un servicio de alojamiento de paquetes de software que le permite alojar sus paquetes de software de forma privada o pública y utilizar paquetes como dependencias en sus proyectos. Para obtener más información, consulta Introducción a GitHub Packages.
La fuente de GitHub Packages es un repositorio de NuGet que usa el protocolo NuGet v3. El URI de la fuente tiene el siguiente formato: https://nuget.pkg.github.com/<namespace>/index.json. Reemplácelo <namespace> por el nombre de la cuenta personal u organización a la que se limitan los paquetes. Por ejemplo, usa el siguiente comando para registrar una fuente de GitHub Packages como un repositorio de PSResource:
$params = @{
Name = 'MyGitHubFeed'
Uri = 'https://nuget.pkg.github.com/MyGitHubOrg/index.json'
}
Register-PSResourceRepository @params
El servicio Github Packages no admite fuentes NuGet que se limitan a un repositorio. El feed debe estar asociado a una cuenta de usuario u organización.
Debes usar credenciales para todas las operaciones con un feed de GitHub Packages. Para obtener más información, consulte la sección Autenticación en GitHub Packages de Trabajar con el registro NuGet.
Limitaciones de GitHub Packages
El módulo Microsoft.PowerShell.PSResourceGet no admite los siguientes escenarios para los repositorios de GitHub Packages:
- Búsqueda de comodines por nombre
Find-PSResource -Name *Find-PSResource -Name PartialName*
- Buscar por etiqueta Por ejemplo:
Find-PSResource -Tag compute
- Buscar por nombre de comando
Find-PSResource -Command CommandName
- Búsqueda por nombre de recurso de DSC
Find-PSResource -DscResourceName ResourceName
- Publicar paquetes en un feed
- El paquete se publica como un paquete privado. Después de publicar, puede usar la interfaz de GitHub para vincularlo al repositorio deseado y cambiar la visibilidad.
Publicar en paquetes de GitHub
Puedes usar el parámetro Credential o ApiKey del Publish-PSResource cmdlet para publicar paquetes en una fuente de GitHub Package. Debe crear un token de acceso personal (PAT) con los ámbitos necesarios habilitados. Para obtener más información sobre los ámbitos y los permisos, consulta Acerca de los permisos para GitHub Packages.
Si usa el parámetro Credential , el valor debe ser un objeto PSCredential que contenga su nombre de usuario y el PAT. Para este ejemplo <personal-access-token> es el token que creó para la publicación.
<username> es tu nombre de usuario de GitHub.
$patToken = ConvertTo-SecureString -String '<personal-access-token>' -AsPlainText -Force
$Credential = [System.Management.Automation.PSCredential]::new('<username>', $patToken)
$publishPSResourceSplat = @{
Path = 'D:\MyModule'
Repository = 'MyGitHubFeed'
Credential = $Credential
}
Publish-PSResource @publishPSResourceSplat
Si utiliza el parámetro ApiKey , el valor debe ser el PAT de texto no cifrado. Por ejemplo:
$publishPSResourceSplat = @{
Path = 'D:\MyModule'
Repository = 'MyGitHubFeed'
ApiKey = '<personal-access-token>'
}
Publish-PSResource @publishPSResourceSplat
Precaución
Nunca debe utilizar credenciales de texto no cifrado en un script. Utilice el módulo SecretManagement u otros métodos para almacenar y recuperar sus credenciales de forma segura. Para obtener más información, consulte Información general sobre los módulos SecretManagement y SecretStore.
JFrog Artifactory
JFrog Artifactory es un servicio de hospedaje para repositorios NuGet. Las fuentes de Artifactory usan el protocolo NuGet v3. El URI de la fuente tiene el siguiente formato:
https://<jfrog-account>.jfrog.io/artifactory/api/nuget/v3/nuget/index.json.
Reemplácelo <jfrog-account> con el nombre de su cuenta de JFrog. Por ejemplo, use el siguiente comando para registrar una fuente de Artifactory como un repositorio de PSResource:
$params = @{
Name = 'MyJFrogFeed'
Uri = 'https://myjfrogaccount.jfrog.io/artifactory/api/nuget/v3/nuget/index.json'
}
Register-PSResourceRepository @params
Debe utilizar credenciales para todas las operaciones con un feed de JFrog Artifactory. Para obtener más información, consulte Creación de tokens de acceso en Artifactory.
Limitaciones de JFrog Artifactory
El módulo Microsoft.PowerShell.PSResourceGet no admite los siguientes escenarios para los repositorios de JFrog Artifactory:
- Búsqueda de comodines por nombre
Find-PSResource -Name *Find-PSResource -Name PartialName*
- Buscar por nombre de comando
Find-PSResource -Command CommandName
- Búsqueda por nombre de recurso de DSC
Find-PSResource -DscResourceName ResourceName
Publicar en JFrog Artifactory
Debe usar el parámetro Credential del Publish-PSResource cmdlet para publicar paquetes en una fuente de JFrog Artifactory. El valor del parámetro Credential debe ser un objeto PSCredential construido a partir de la dirección de correo electrónico y el token de acceso que se creó al configurar el repositorio NuGet en la cuenta de JFrog. Por ejemplo:
$patToken = ConvertTo-SecureString -String '<jfrog-access-token>' -AsPlainText -Force
$Credential = [System.Management.Automation.PSCredential]::new('<email-address>', $patToken)
$publishPSResourceSplat = @{
Path = 'D:\MyModule'
Repository = 'MyJFrogFeed'
Credential = $Credential
}
Publish-PSResource @publishPSResourceSplat
Para este ejemplo <jfrog-access-token> es el token que creó para la publicación.
<email-address> es su dirección de correo electrónico asociada con su cuenta de JFrog.
Precaución
Nunca debe utilizar credenciales de texto no cifrado en un script. Utilice el módulo SecretManagement u otros métodos para almacenar y recuperar sus credenciales de forma segura. Para obtener más información, consulte Información general sobre los módulos SecretManagement y SecretStore.
MyGet.org
MyGet.org es un servicio de hospedaje para repositorios NuGet.
El módulo Microsoft.PowerShell.PSResourceGet admite fuentes MyGet que usan el protocolo NuGet v3. El URI de la fuente tiene el siguiente formato:
https://www.myget.org/F/<feedname>/api/v3/index.json
Reemplácelo <feedname> por el nombre de su fuente MyGet. Por ejemplo, use el siguiente comando para registrar una fuente MyGet como un repositorio de PSResource:
$params = @{
Name = 'PublicMyGetFeed'
Uri = 'https://www.myget.org/F/mypackagefeed/api/v3/index.json'
}
Register-PSResourceRepository @params
MyGet le permite crear feeds públicos o privados. No necesita credenciales para buscar, descargar o instalar paquetes desde una fuente MyGet pública. Para publicar artefactos o acceder a feeds privados, debe tener una cuenta y una clave de API. Para obtener más información al respecto, consulte MyGet Security.
Limitaciones de MyGet
El módulo Microsoft.PowerShell.PSResourceGet no admite los siguientes escenarios para los repositorios MyGet:
- Búsqueda de comodines por nombre
Find-PSResource -Name *Find-PSResource -Name PartialName*
- Búsqueda por etiqueta
Find-PSResource -Tag compute
- Buscar por nombre de comando
Find-PSResource -Command CommandName
- Búsqueda por nombre de recurso de DSC
Find-PSResource -DscResourceName ResourceName
Publicar en una fuente MyGet
Debe usar el parámetro ApiKey del Publish-PSResource cmdlet con token de acceso personal (PAT) para publicar paquetes en una fuente MyGet. El valor del parámetro ApiKey debe ser un PAT de texto no cifrado de su cuenta MyGet que tenga permisos de lectura y escritura. Para obtener más información acerca de la creación de tokens de acceso, consulte MyGet Security.
Por ejemplo:
$publishPSResourceSplat = @{
Path = 'D:\MyModule'
Repository = 'MyGitHubFeed'
ApiKey = '<personal-access-token>'
}
Publish-PSResource @publishPSResourceSplat
Precaución
Nunca debe utilizar credenciales de texto no cifrado en un script. Utilice el módulo SecretManagement u otros métodos para almacenar y recuperar sus credenciales de forma segura. Para obtener más información, consulte Información general sobre los módulos SecretManagement y SecretStore.
Repositorios basados en recursos compartidos de archivos
Puede crear su propio repositorio de paquetes como un recurso compartido de archivos local. Para obtener más información, vea Trabajar con PSRepositories locales. El acceso a repositorios basados en recursos compartidos de archivos se utiliza mediante API de sistema de archivos local o protocolos de sistema de archivos remotos, como SMB o NFS.
Los permisos establecidos por el sistema de archivos y el protocolo de uso compartido de archivos controlan el acceso a los archivos. No se puede usar el parámetro Credential de los cmdlets Microsoft.PowerShell.PSResourceGet para acceder a los archivos mediante credenciales de usuario alternativas. Al usar un protocolo de uso compartido de archivos, como NFS o SMB, asegúrese de seguir las instrucciones recomendadas para proteger el protocolo. Para obtener más información sobre cómo proteger SMB en Windows, consulte Mejoras de seguridad de SMB.
El módulo Microsoft.PowerShell.PSResourceGet admite todos los escenarios de búsqueda de repositorios de recursos compartidos de archivos.
Repositorios NuGet autohospedados
Puede crear su propio repositorio de paquetes hospedando su propio servidor NuGet. NuGet.Server es un paquete proporcionado por .NET Foundation. Puede usar este paquete para crear una aplicación ASP.NET que hospede una fuente de paquetes en cualquier servidor de Windows que ejecute IIS. Este servidor usa el protocolo NuGet v2. Para obtener más información, vea Trabajar con PSRepositories locales.
El módulo Microsoft.PowerShell.PSResourceGet admite fuentes NuGet.Server. El URI de la fuente tiene el siguiente formato:
http://<server-host-name>/nuget
Nota:
El módulo Microsoft.PowerShell.PSResourceGet espera que el URI termine con /nuget. Cualquier URI que termine con /nuget se trata como una fuente NuGet.Server.
Use el siguiente comando para registrar el servidor autohospedado como repositorio de PSResource:
$params = @{
Name = 'SelfHostedNuGet'
Uri = 'https://host.contoso.net/nuget'
}
Register-PSResourceRepository @params
No necesita credenciales para buscar, descargar o instalar paquetes desde su servidor autohospedado.
Limitaciones del servidor NuGet autohospedado
El módulo Microsoft.PowerShell.PSResourceGet no admite los siguientes escenarios para servidores NuGet autohospedados:
- Búsqueda general que utiliza el parámetro Type
-
Find-PSResourcebusca recursos que coincidan por nombre, pero se omite el valor del parámetro Type . El cmdlet devuelve todos los módulos y scripts que coinciden con el nombre.
-
- Buscar por nombre de comando
Find-PSResource -Command CommandName
- Búsqueda por nombre de recurso de DSC
Find-PSResource -DscResourceName ResourceName
Publicación en una instancia de NuGet.Server
Cuando se configura por primera vez una instancia de NuGet.Server, no hay ninguna clave de API definida y se deshabilita la inserción de paquetes en la fuente. Para configurar una clave de API, consulte la sección Adición de paquetes a la fuente de Uso de NuGet.Server para hospedar fuentes de NuGet. En el ejemplo siguiente se muestra cómo publicar un paquete mediante la clave de API configurada.
$publishPSResourceSplat = @{
Path = 'D:\MyModule'
Repository = 'MyGitHubFeed'
ApiKey = '<apikey>'
}
Publish-PSResource @publishPSResourceSplat
Precaución
Nunca debe utilizar credenciales de texto no cifrado en un script. Utilice el módulo SecretManagement u otros métodos para almacenar y recuperar sus credenciales de forma segura. Para obtener más información, consulte Información general sobre los módulos SecretManagement y SecretStore.