РАЗДЕЛ 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