none
Работа с аргументами функции | Powershell RRS feed

  • Вопрос

  • Доброго времени суток. 

    Имеются данные в переменной

    $out | gm
    
    
       TypeName: Selected.System.Management.Automation.PSCustomObject
    
    Name           MemberType   Definition                                             
    ----           ----------   ----------                                             
    Equals         Method       bool Equals(System.Object obj)                         
    GetHashCode    Method       int GetHashCode()                                      
    GetType        Method       type GetType()                                         
    ToString       Method       string ToString()                                      
    LastLogon      NoteProperty System.String LastLogon=2017.05.17 11:55:41            
    OU             NoteProperty System.String OU=OU=Test,OU=Staff,DC=dom,DC=com
    SamAccountName NoteProperty string SamAccountName=jet.li           

    с содержимым 

    PS C:\!Scripts> $Out
    
    LastLogon           SamAccountName OU                                    
    ---------           -------------- --                                    
    2017.05.17 11:55:41 jet.li         OU=Test,OU=Staff,DC=dom,DC=com
    2017.05.17 11:53:32 bruce.willis   OU=Test,OU=Staff,DC=dom,DC=com

    Соответственно, если передать в качестве параметра эту переменную в функцию, .count у неё будет 2. Если данную переменную скопировать в другую и передать обе переменные в функцию, .count тоже будет 2. Во втором случае все работает правильно, нужна помощь с первым вариантом.

    Вариант с разбором переменной $Args не подходит, так как имеются другие параметры в функции. Может есть какие идеи или вариантов вообще нет? Буду рад любой информации. Спасибо

Ответы

  • А есть объяснение для чего это надо? Какая задача решается?
    $a = gps | select -first 2
    $b = gps | select -last 2
    
    Function OCount ($obj) {
    	$obj.Count
    }
    
    PS > OCount (,$a)
    1
    PS > OCount $a,$b
    2
    PS > OCount $a,$b,$c
    3
    PS > OCount $a,$b,$c,$e
    4



    • Изменено KazunEditor 17 мая 2017 г. 14:10
    • Помечено в качестве ответа JabBaton 18 мая 2017 г. 6:03
    Отвечающий

Все ответы

  • Где функция count?

    Что такое первый вариант?

    Какой должен быть правильный вариант поведения?

    Отвечающий
  • 1. $out.count -eq 2, там запятая перед .count

    2. Когда $out в функции рассматривался бы как один объект, т.е. count -eq 1, а не возвращал количество строк. Во втором случае он как раз возвращает кол-во объектов.

  • А есть объяснение для чего это надо? Какая задача решается?
    $a = gps | select -first 2
    $b = gps | select -last 2
    
    Function OCount ($obj) {
    	$obj.Count
    }
    
    PS > OCount (,$a)
    1
    PS > OCount $a,$b
    2
    PS > OCount $a,$b,$c
    3
    PS > OCount $a,$b,$c,$e
    4



    • Изменено KazunEditor 17 мая 2017 г. 14:10
    • Помечено в качестве ответа JabBaton 18 мая 2017 г. 6:03
    Отвечающий
  • Задача такая. Банальная функция для отправки отчета, которая в себя включает много таблиц. А все решила запятая) Спасибо



    • Изменено JabBaton 18 мая 2017 г. 6:04