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