РАЗДЕЛ
    about_methods

КРАТКОЕ ОПИСАНИЕ
    Описание способов использования методов для выполнения действий с 
    объектами в Windows PowerShell.
 

ПОЛНОЕ ОПИСАНИЕ
    Для представления элементов в хранилищах данных или состояния 
    компьютера в программе Windows PowerShell используются 
    структурированные наборы данных, называемые объектами. Например, 
    обращаясь к файлу в Windows PowerShell, вы работаете не с самим 
    файлом, а с объектом FileInfo, выполняющим роль его прокси.


    Большинство объектов содержат методы. Метод представляет собой набор 
    инструкций, осуществляющих определенные операции с данным объектом. 
    Например, объект FileInfo содержит метод CopyTo, позволяющий 
    копировать файл, представленный данным объектом.


    С помощью командлета Get-Member можно просмотреть список методов и их 
    определений, связанных с определенным объектом. Однако для использования 
    командлета необходимо, чтобы объект уже существовал в каком-либо 
    виде: в виде переменной, в виде объекта, созданного при указании команды 
    в качестве аргумента командлета Get-Member, либо в виде объекта, 
    переданного по конвейеру. Предположим, например, что переменной $a 
    присвоено строковое значение, то есть эта переменная связана с 
    объектом-строкой. Чтобы просмотреть список методов объекта, в 
    командной строке Windows PowerShell введите следующую команду:


        Get-Member -inputobject $a -membertype method


    Чтобы просмотреть список методов и их определений, связанных с 
    объектом, переданным по конвейеру, можно использовать командлет 
    Get-Member в этом конвейере, как показано в следующем примере:


        Get-ChildItem c:\final.txt | Get-Member -membertype method


    Стандартный способ вызвать метод - ввести его имя после ссылки на 
    объект (например, после переменной или выражения). Ссылка на 
    объект и имя метода разделяются точкой. Кроме того, все аргументы, 
    передаваемые методу, должны следовать сразу после имени метода и 
    заключаться в круглые скобки. 


    Если в сигнатуре метода входные аргументы отсутствуют, все равно 
    необходимо указать пустой набор аргументов в круглых скобках.


    Например, в следующей команде используется метод GetType, 
    возвращающий тип данных, связанный со строковым объектом $a.


        $a.GetType()


    Метод GetType возвращает тип данных для любого объекта, а переменная 
    всегда представляет объект. Тип объекта определяется типом данных, 
    хранимых в указанной переменной.


    Все действия в Windows PowerShell, например объявление переменной или 
    объединение команд в конвейер, связаны с объектами.Поэтому методы можно 
    использовать в самых разных ситуациях. Например, метод можно использовать 
    при проведении операций над значениями свойств, как показано в следующей 
    команде:


        (Get-ChildItem c:\final.txt).name.ToUpper()


    В данном случае объектом, для которого осуществляется вызов 
    метода ToUpper, является строка, связанная со свойством name. 
    (Обратите внимание, что для работы этого примера необходимо, чтобы в 
    корневом каталоге диска C: существовал файл Final.txt.) Фактически, 
    свойство name является свойством объекта FileInfo, возвращаемого 
    командлетом Get-ChildItem. В данном примере демонстрируется не только 
    объектная ориентированность среды Windows PowerShell, но и способ 
    вызова методов для любых доступных объектов.


    Результаты, полученные в предыдущем примере, также можно получить с 
    использованием переменной для хранения выходных данных командлета 
    Get-ChildItem, как показано в следующем примере:


        $a = (Get-ChildItem c:\final.txt).name
        $a.ToUpper()


    В приведенной команде также используется метод ToUpper строкового 
    объекта, связанного с переменной, в которой хранится имя файла, 
    возвращаемое командой Get-ChildItem.


    В некоторых случаях для использования метода необходимо указать 
    аргумент, управляющий работой метода. Например, объект FileInfo 
    содержит метод MoveTo, с помощью которого можно перемещать файл 
    из одного местоположения в другое. При использовании данного метода 
    необходимо указать аргумент, задающий целевое местоположение файла. 
    В следующем примере показано, как использовать этот аргумент:


        (Get-ChildItem c:\final.txt).MoveTo("c:\techdocs\final.txt")


    Команда Get-ChildItem возвращает объект FileInfo для файла 
    Final.txt, а затем с помощью метода MoveTo для данного объекта 
    задает новое местоположение файла и осуществляет его перемещение.


    Список аргументов, используемых методом, приводится в соответствующем 
    определении метода. Определение метода содержит как минимум одну сигнатуру 
    метода (также называемую перегрузкой в Microsoft .NET Framework). 
    Сигнатура метода содержит его имя и может содержать параметры, которые 
    необходимо указать при вызове метода. При отображении списка сигнатур 
    методов с помощью командлета Get-Member в качестве разделителя 
    используется запятая. Например, метод CopyTo класса FileInfo содержит 
    следующие две сигнатуры методов:


        1. CopyTo(String destFileName)
        2. CopyTo(String destFileName, Boolean overwrite)


    Первая сигнатура метода принимает имя целевого файла (включая 
    путь к нему), в который необходимо скопировать исходный файл. 
    следующем примере первый метод CopyTo используется для 
    В копирования файла Final.txt в каталог C:\Bin.


        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")


    Если данный файл по указанному пути уже существует, выполнение 
    метода CopyTo завершается с ошибкой и Windows PowerShell выдает 
    следующее сообщение об ошибке:


        Исключение при вызове "CopyTo" с "1" аргументом: "Файл 
        "c:\bin\final.txt" уже существует".


    Второй сигнатуре метода передается имя целевого файла, как и в 
    предыдущем примере. Однако при этом также указывается логическое 
    значение, определяющее, будет ли перезаписан существующий файл с 
    таким же именем в целевом местоположении, как показано в 
    следующем примере.


        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)


    В качестве этого логического значения необходимо использовать 
    переменную $True, создаваемую средой Windows PowerShell автоматически. 
    Переменная $True содержит логическое значение "true". (Соответственно, 
    переменная $False содержит логическое значение "false".)



СМ. ТАКЖЕ
    about_Objects
    Get-Member





Содержание