internal Collection<ProviderInfo> GetProvider(PSSnapinQualifiedName providerName) { Collection<ProviderInfo> result = new Collection<ProviderInfo>(); if (providerName == null) { ProviderNotFoundException e = new ProviderNotFoundException( providerName.ToString(), SessionStateCategory.CmdletProvider, "ProviderNotFound", SessionStateStrings.ProviderNotFound); throw e; } // Get the provider from the providers container List<ProviderInfo> matchingProviders = null; if (!Providers.TryGetValue(providerName.ShortName, out matchingProviders)) { // If the provider was not found, we may need to auto-mount it. SessionStateInternal.MountDefaultDrive(providerName.ShortName, ExecutionContext); if (!Providers.TryGetValue(providerName.ShortName, out matchingProviders)) { ProviderNotFoundException e = new ProviderNotFoundException( providerName.ToString(), SessionStateCategory.CmdletProvider, "ProviderNotFound", SessionStateStrings.ProviderNotFound); throw e; } } if (ExecutionContext.IsSingleShell && !String.IsNullOrEmpty(providerName.PSSnapInName)) { // Be sure the PSSnapin/Module name matches foreach (ProviderInfo provider in matchingProviders) { if (String.Equals( provider.PSSnapInName, providerName.PSSnapInName, StringComparison.OrdinalIgnoreCase) || String.Equals( provider.ModuleName, providerName.PSSnapInName, StringComparison.OrdinalIgnoreCase)) { result.Add(provider); } } } else { foreach (ProviderInfo provider in matchingProviders) { result.Add(provider); } } return result; } // GetProvider
internal Collection<ProviderInfo> GetProvider(PSSnapinQualifiedName providerName) { Collection<ProviderInfo> collection = new Collection<ProviderInfo>(); if (providerName == null) { ProviderNotFoundException exception = new ProviderNotFoundException(providerName.ToString(), SessionStateCategory.CmdletProvider, "ProviderNotFound", SessionStateStrings.ProviderNotFound, new object[0]); throw exception; } string pName = null; List<ProviderInfo> list = null; if (!this.Providers.TryGetValue(providerName.ShortName, out list)) { MountDefaultDrive(providerName.ShortName, this._context); pName = (OSHelper.IsUnix && providerName.ShortName == "/") ? "FileSystem" : providerName.ShortName; if (pName == "env") { pName = "Environment"; } else if (pName == "cert") { pName = "Certificate"; } else if (pName == "reg") { pName = "Registry"; } if (!this.Providers.TryGetValue(pName, out list)) { ProviderNotFoundException exception2 = new ProviderNotFoundException(providerName.ToString(), SessionStateCategory.CmdletProvider, "ProviderNotFound", SessionStateStrings.ProviderNotFound, new object[0]); throw exception2; } } if (string.IsNullOrEmpty (pName)) pName = providerName.PSSnapInName; if (this.ExecutionContext.IsSingleShell && !string.IsNullOrEmpty(providerName.PSSnapInName)) { foreach (ProviderInfo info in list) { if (string.Equals(info.PSSnapInName, pName, StringComparison.OrdinalIgnoreCase) || string.Equals(info.ModuleName, pName, StringComparison.OrdinalIgnoreCase)) { collection.Add(info); } } return collection; } foreach (ProviderInfo info2 in list) { collection.Add(info2); } return collection; }