PowerShell поддерживает ООП?

Из того, что я прочитал, потому что окно браузера PopUp открывается из iframe, а содержимое из другого источника, я не могу получить доступ к всплывающему окну по соображениям безопасности. Таким образом, невозможно переместить его на передний план, если пользователь не нажмет темное наложение или ссылку «Нажмите, чтобы продолжить»

9
задан alex2k8 25 March 2009 в 22:40
поделиться

3 ответа

Можно определить новые типы в PowerShell v2.0 с помощью Add-Type cmdlet:

ПОДРОБНОЕ ОПИСАНИЕ

Добавлять-тип cmdlet позволяет Вам определить класс.NET на своей сессии Windows PowerShell. Можно затем инстанцировать объектов (при помощи Нового Объекта cmdlet) и использовать объекты, так же, как Вы использовали бы любую.NET Обь ject. Если Вы добавите команду Add-Type к своему профилю Windows PowerShell, то класс будет доступен на всех сессиях Windows PowerShell.

Можно указать тип путем определения существующего блока или файлов исходного кода, или можно указать исходный код в строке или сохраненный в переменной. Можно даже указать только метод, и Добавлять-тип определит и генерирует класс. Можно использовать эту функцию, чтобы заставить Платформу Вызвать (P/Invoke) вызовы к неуправляемым функциям в Windows PowerShell. При определении исходного кода Добавлять-тип компилирует указанный источник, co de and генерирует блок в оперативной памяти, который содержит новые типы.NET.

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

help Add-Type для получения дополнительной информации.

Кроме того, см.:

12
ответ дан 4 December 2019 в 09:14
поделиться

PowerShell является большим количеством потребительского языка ООП. Это может использовать большую часть Платформы.NET, но это исходно не поддерживает интерфейсы создания, классы и конечно не mixins..NET, на которой система типов PowerShell основана, не поддерживает mixins. PowerShell действительно поддерживает динамическое добавление свойств и методов к существующему объекту через добавлять-участника cmdlet.

Добавлять-тип полезен, но если необходимо выйти к C# или VB для определения класса или класса, который реализует конкретный интерфейс, я не полагал бы, что первый класс поддерживает создание классов/интерфейсов.

Если Вы ищущий некоторый свободный учебный материал, проверьте Эффективный Windows PowerShell.

8
ответ дан 4 December 2019 в 09:14
поделиться

Сделки с трубопроводом PowerShell с объектами, не только текст передает потоком, конвейер Unix делает. Все переменные являются объектами-экземплярами также. Это все объекты.NET, BTW.

Вот часть вывода команды "ls", переданной по каналу получать-участнику cmdlet:

    PS C:\Documents and Settings\Administrator.DEV-3DPST1-SWK> ls | get-member


   TypeName: System.IO.DirectoryInfo

Name                      MemberType     Definition
----                      ----------     ----------
Create                    Method         System.Void Create(DirectorySecurity directorySecurity), System.Void Create()
CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
CreateSubdirectory        Method         System.IO.DirectoryInfo CreateSubdirectory(String path), System.IO.Director...
Delete                    Method         System.Void Delete(), System.Void Delete(Boolean recursive)
Equals                    Method         System.Boolean Equals(Object obj)
GetAccessControl          Method         System.Security.AccessControl.DirectorySecurity GetAccessControl(), System....
GetDirectories            Method         System.IO.DirectoryInfo[] GetDirectories(String searchPattern), System.IO.D...
GetFiles                  Method         System.IO.FileInfo[] GetFiles(String searchPattern), System.IO.FileInfo[] G...
GetFileSystemInfos        Method         System.IO.FileSystemInfo[] GetFileSystemInfos(String searchPattern), System...
GetHashCode               Method         System.Int32 GetHashCode()
GetLifetimeService        Method         System.Object GetLifetimeService()
GetObjectData             Method         System.Void GetObjectData(SerializationInfo info, StreamingContext context)
GetType                   Method         System.Type GetType()
get_Attributes            Method         System.IO.FileAttributes get_Attributes()
get_CreationTime          Method         System.DateTime get_CreationTime()

получать-участник отображает членов объекта, который Вы передаете по каналу к нему. Вы видите, что это фактические члены Системы. Класс IO.DirectoryInfo.

0
ответ дан 4 December 2019 в 09:14
поделиться