Ich bin auf der Suche nach einem PowerShell Provider in PowerShell zu implementieren.Implementieren PowerShell PSProvider * in * PowerShell
Ich denke, dass, wenn ich nur die Typen definieren, dann importieren Sie sie in meine Sitzung (Import-Modul), sollte ich in der Lage sein, sie verfügbar zu haben.
Zum Beispiel funktioniert diese nicht aber es ist entlang des Weges von dem, was ich gerne implementieren würde.
Mir fehlt natürlich einiges ... weiß jemand, ob das möglich ist?
# 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
Nach dem Import-Modul, ich versuche, den Antrieb "Umgebungen" zu erstellen:
new-psdrive -psprovider Environments -name "Environments" -root ""
Fehler mit:
New-PSDrive : Cannot find a provider with the name 'Environments'.
der Anbieter tatsächlich gearbeitet Unter der Annahme, vielleicht haben sie eine Rückkehr Liste der Umgebungen: dev, qa, Inszenierung, Produktion.
Dann würde Ich mag Lage sein, diese wieder verwenden durch:
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]
Während nicht vollständig in Powershell implementiert, das sieht aus wie es perfekt sein, danke! –