Estoy buscando implementar un proveedor de PowerShell en PowerShell.Implementar PowerShell PSProvider * en * PowerShell
Sigo pensando que si solo defino los tipos, entonces los importo a mi sesión (módulo de importación), debería poder tenerlos disponibles.
Por ejemplo, este no funciona pero está en la ruta de lo que me gustaría implementar.
Obviamente me falta mucho ... ¿Alguien sabe si esto es posible?
# EnvironmentProvider.ps1
$reference_assemblies = (
"System.Management.Automation, Version=1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
# "System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
)
$source = @"
namespace Providers
{
using System.Management.Automation;
using System.Management.Automation.Provider;
[CmdletProvider("Environments", ProviderCapabilities.None)]
public class EnvironmentProvider : DriveCmdletProvider
{
protected override PSDriveInfo NewDrive(PSDriveInfo drive)
{
return new EnvironmentDriveInfo(drive);
}
protected override object NewDriveDynamicParameters()
{
return base.NewDriveDynamicParameters();
}
}
public class EnvironmentDriveInfo : PSDriveInfo
{
public EnvironmentDriveInfo(PSDriveInfo driveInfo) : base(driveInfo)
{
}
}
}
"@
# -ea silentlycontinue in case its already loaded
#
add-type -referencedassemblies $referenced_assemblies -typedefinition $source -language CSharp -erroraction silentlycontinue
Después de la importación-módulo, trato de crear los "entornos" unidad:
new-psdrive -psprovider Environments -name "Environments" -root ""
errores con:
New-PSDrive : Cannot find a provider with the name 'Environments'.
Suponiendo que el proveedor no funcionaba, tal vez tenga que devolver una lista de entornos: dev, qa, montaje, producción.
Entonces me gustaría ser capaz de volver a utilizar este medio de:
c:\adminlib>import-module .\EnvironmentProvider.ps1
c:\adminlib>environments:
environments:>ls
dev
qa
staging
production
environments:> cd production
environments\production> [execute actions against production]
environments\production:> cd dev
environments\dev:> [execute actions against dev, etc]
Si bien no se han aplicado en su totalidad en PowerShell, esto parece que va a ser perfecto, gracias! –