protected override void ProcessRecord()
{
// We have to invoke this here because we *may not* invoke
// any Vault access but we do rely on Ext mechanism access.
Util.PoshHelper.BeforeExtAccess();
if (ReloadProviders)
{
InstallerExtManager.Reload();
}
else if (!string.IsNullOrEmpty(GetInstaller))
{
WriteVerbose("Getting details of Installer");
var pInfo = InstallerExtManager.GetProviderInfos()
.FirstOrDefault(_ => _.Name == GetInstaller);
var p = InstallerExtManager.GetProvider(GetInstaller);
if (ParametersOnly)
{
WriteVerbose("Showing parameter details only");
WriteObject(p.DescribeParameters().Select(_ => new {
_.Name,
_.Label,
_.Type,
_.IsRequired,
_.IsMultiValued,
_.Description,
}), true);
}
else
{
WriteObject(new
{
pInfo.Name,
pInfo.Info.Label,
pInfo.Info.IsUninstallSupported,
pInfo.Info.Description,
Parameters = p.DescribeParameters().Select(_ => new {
_.Name,
_.Label,
_.Type,
_.IsRequired,
_.IsMultiValued,
_.Description,
}),
});
}
}
else if (ListInstallers)
{
WriteVerbose("Listing all Installers");
WriteObject(InstallerExtManager.GetProviderInfos().Select(_ => _.Name), true);
}
else
{
WriteVerbose("Getting details of preconfigured Installer Profile");
using (var vlt = Util.VaultHelper.GetVault(VaultProfile))
{
vlt.OpenStorage();
var v = vlt.LoadVault();
if (ListProfiles)
{
WriteObject(v.InstallerProfiles?.Values, true);
}
else
{
var ipi = v.InstallerProfiles?.GetByRef(ProfileRef, throwOnMissing: false);
if (ipi == null)
{
WriteObject(ipi);
}
else
{
var asset = vlt.GetAsset(Vault.VaultAssetType.InstallerConfigInfo,
ipi.Id.ToString());
using (var s = vlt.LoadAsset(asset))
{
WriteObject(JsonHelper.Load<InstallerProfile>(s), false);
}
}
}
}
}
}