internal Collection <PSObject> GetChildItems(string path, bool recurse, ProviderRuntime providerRuntime) { if (string.IsNullOrEmpty(path)) { path = CurrentLocation.Path; } CmdletProvider provider = GetProviderByPath(path); if ((path != null) && (ItemExists(provider, path, providerRuntime))) { if (IsItemContainer(provider, path, providerRuntime)) { ContainerCmdletProvider containerProvider = provider as ContainerCmdletProvider; if (containerProvider != null) { containerProvider.GetChildItems(path, recurse, providerRuntime); } } else { ItemCmdletProvider itemProvider = provider as ItemCmdletProvider; if (itemProvider != null) { itemProvider.GetItem(path, providerRuntime); } } } return(providerRuntime.RetreiveAllProviderData()); }
/// <summary> /// Gets the item at the specified path. /// </summary> /// <param name="providerInstance"> /// The provider instance to use. /// </param> /// <param name="path"> /// The path to the item if it was specified on the command line. /// </param> /// <param name="context"> /// The context which the core command is running. /// </param> /// <exception cref="NotSupportedException"> /// If the <paramref name="providerInstance"/> does not support this operation. /// </exception> /// <exception cref="PipelineStoppedException"> /// If the pipeline is being stopped while executing the command. /// </exception> /// <exception cref="ProviderInvocationException"> /// If the provider threw an exception. /// </exception> private void GetItemPrivate( CmdletProvider providerInstance, string path, CmdletProviderContext context) { // All parameters should have been validated by caller Dbg.Diagnostics.Assert( providerInstance != null, "Caller should validate providerInstance before calling this method"); Dbg.Diagnostics.Assert( path != null, "Caller should validate path before calling this method"); Dbg.Diagnostics.Assert( context != null, "Caller should validate context before calling this method"); ItemCmdletProvider itemCmdletProvider = GetItemProviderInstance(providerInstance); try { itemCmdletProvider.GetItem(path, context); } catch (LoopFlowException) { throw; } catch (PipelineStoppedException) { throw; } catch (ActionPreferenceStopException) { throw; } catch (Exception e) // Catch-all OK, 3rd party callout. { throw NewProviderInvocationException( "GetItemProviderException", SessionStateStrings.GetItemProviderException, itemCmdletProvider.ProviderInfo, path, e); } }