Szukam wdrożenia PowerShell Provider w PowerShell.Implementacja PowerShell PSProvider * w * PowerShell
Wciąż myślę, że jeśli po prostu zdefiniuję typy, następnie zaimportuję je do mojej sesji (moduł importu), powinienem móc je mieć.
Na przykład to nie działa, ale jest na ścieżce tego, co chciałbym zaimplementować.
Najwyraźniej brakuje mi trochę ... Czy ktoś wie, czy to możliwe?
# 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
Po Import-Module, staram się stworzyć Drive "środowisk":
new-psdrive -psprovider Environments -name "Environments" -root ""
błędy z:
New-PSDrive : Cannot find a provider with the name 'Environments'.
Zakładając usługodawca faktycznie przepracowane, może mieć to zwróci lista środowisk: dev, qa, inscenizacja, produkcja.
Następnie chciałbym móc to ponowne wykorzystywanie przez:
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]
Chociaż nie jest realizowany w całości w powershell, to wygląda to będzie idealny, dzięki! –