コード例 #1
0
        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
コード例 #2
0
ファイル: SessionStateInternal.cs プロジェクト: nickchal/pash
        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;
        }