Esempio n. 1
0
        void GetProperty(string path, INodeFactory factory, Collection <string> providerSpecificPickList)
        {
            var      node   = factory.GetNodeValue();
            PSObject values = null;

            if (null == providerSpecificPickList || 0 == providerSpecificPickList.Count)
            {
                values = PSObject.AsPSObject(node.Item);
            }
            else
            {
                values = new PSObject();
                var value     = node.Item;
                var propDescs = TypeDescriptor.GetProperties(value);
                var props     = (from PropertyDescriptor prop in propDescs
                                 where (providerSpecificPickList.Contains(prop.Name,
                                                                          StringComparer.InvariantCultureIgnoreCase))
                                 select prop);

                props.ToList().ForEach(p =>
                {
                    var iv = p.GetValue(value);
                    if (null != iv)
                    {
                        values.Properties.Add(new PSNoteProperty(p.Name, p.GetValue(value)));
                    }
                });
            }
            WritePropertyObject(values, path);
        }
Esempio n. 2
0
 private void WriteChildItem(string path, bool recurse, INodeFactory child)
 {
     try
     {
         var i = child.GetNodeValue();
         if (null == i)
         {
             return;
         }
         var childPath = MakePath(path, i.Name);
         WritePathNode(childPath, child);
         if (recurse)
         {
             var context = CreateContext(path, recurse);
             var kids    = child.GetNodeChildren(context);
             WriteChildItem(childPath, recurse, kids);
         }
     }
     catch (PipelineStoppedException)
     {
         throw;
     }
     catch (Exception e)
     {
         WriteDebug("An exception was raised while writing child items: " + e.ToString());
     }
 }
Esempio n. 3
0
        private void WritePathNode(string nodeContainerPath, INodeFactory factory)
        {
            var value = factory.GetNodeValue();

            if (null == value)
            {
                return;
            }

            PSObject pso = PSObject.AsPSObject(value.Item);

            pso.Properties.Add(new PSNoteProperty(ItemModePropertyName, factory.ItemMode));
            WriteItemObject(pso, nodeContainerPath, value.IsCollection);
        }
Esempio n. 4
0
        private void WritePathNode(string nodeContainerPath, INodeFactory factory)
        {
            var value = factory.GetNodeValue();

            if (null == value)
            {
                return;
            }

            nodeContainerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(nodeContainerPath);
            PSObject pso = PSObject.AsPSObject(value.Item);

            pso.Properties.Add(new PSNoteProperty(ItemModePropertyName, factory.ItemMode));
            WriteItemObject(pso, nodeContainerPath, value.IsCollection);
        }
Esempio n. 5
0
        void SetProperty(string path, INodeFactory factory, PSObject propertyValue)
        {
            var node      = factory.GetNodeValue();
            var value     = node.Item;
            var propDescs = TypeDescriptor.GetProperties(value);
            var psoDesc   = propertyValue.Properties;
            var props     = (from PropertyDescriptor prop in propDescs
                             let psod = (from pso in psoDesc
                                         where StringComparer.InvariantCultureIgnoreCase.Equals(pso.Name, prop.Name)
                                         select pso).FirstOrDefault()
                                        where null != psod
                                        select new { PSProperty = psod, Property = prop });


            props.ToList().ForEach(p => p.Property.SetValue(value, p.PSProperty.Value));
        }
Esempio n. 6
0
 public IPathNode GetNodeValue()
 {
     return(_factory.GetNodeValue());
 }
Esempio n. 7
0
        void GetProperty(string path, INodeFactory factory, Collection<string> providerSpecificPickList)
        {
            var node = factory.GetNodeValue();
            PSObject values = null;

            if (null == providerSpecificPickList || 0 == providerSpecificPickList.Count)
            {
                values = PSObject.AsPSObject(node.Item);
            }
            else
            {
                values = new PSObject();
                var value = node.Item;
                var propDescs = TypeDescriptor.GetProperties(value);
                var props = (from PropertyDescriptor prop in propDescs
                             where (providerSpecificPickList.Contains(prop.Name,
                                                                      StringComparer.InvariantCultureIgnoreCase))
                             select prop);

                props.ToList().ForEach(p =>
                                           {
                                               var iv = p.GetValue(value);
                                               if (null != iv)
                                               {
                                                   values.Properties.Add(new PSNoteProperty(p.Name, p.GetValue(value)));
                                               }
                                           });
            }
            WritePropertyObject(values, path);
        }
Esempio n. 8
0
        private void WritePathNode(string nodeContainerPath, INodeFactory factory)
        {
            var value = factory.GetNodeValue();
            if (null == value)
            {
                return;
            }

            PSObject pso = PSObject.AsPSObject(value.Item);
            pso.Properties.Add(new PSNoteProperty(ItemModePropertyName, factory.ItemMode));
            WriteItemObject(pso, nodeContainerPath, value.IsCollection);
        }
Esempio n. 9
0
        void SetProperty(string path, INodeFactory factory, PSObject propertyValue)
        {
            var node = factory.GetNodeValue();
            var value = node.Item;
            var propDescs = TypeDescriptor.GetProperties(value);
            var psoDesc = propertyValue.Properties;
            var props = (from PropertyDescriptor prop in propDescs
                         let psod = (from pso in psoDesc
                                     where StringComparer.InvariantCultureIgnoreCase.Equals(pso.Name, prop.Name)
                                     select pso).FirstOrDefault()
                         where null != psod
                         select new {PSProperty = psod, Property = prop});

            props.ToList().ForEach(p => p.Property.SetValue(value, p.PSProperty.Value));
        }
Esempio n. 10
0
        private void WritePathNode(string nodeContainerPath, INodeFactory factory)
        {
            var value = factory.GetNodeValue();
            if (null == value)
            {
                return;
            }

            nodeContainerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(nodeContainerPath);
            PSObject pso = PSObject.AsPSObject(value.Item);
            pso.Properties.Add(new PSNoteProperty(ItemModePropertyName, factory.ItemMode));
            WriteItemObject(pso, nodeContainerPath, value.IsCollection);
        }
Esempio n. 11
0
 private void WriteChildItem(string path, bool recurse, INodeFactory child)
 {
     try
     {
         var i = child.GetNodeValue();
         if (null == i)
         {
             return;
         }
         var childPath = MakePath(path, i.Name);
         WritePathNode(childPath, child);
         if (recurse)
         {
             var context = CreateContext(path, recurse);
             var kids = child.GetNodeChildren(context);
             WriteChildItem(childPath, recurse, kids);
         }
     }
     catch (PipelineStoppedException)
     {
         throw;
     }
     catch (Exception e)
     {
         WriteDebug("An exception was raised while writing child items: " + e.ToString());
     }
 }