Использование .NET-объектов. Вызов статических методов
Оболочка PowerShell базируется на платформе .NET и позволяет использовать все ее возможности из командной строки. В частности, тот же командлет New-Object, с помощью которого мы работали с объектами WMI и COM, позволяет создавать экземпляры .NET-объектов. Этой возможностью можно воспользоваться в случае, если для решения определенной задачи не удается найти подходящий командлет PowerShell, но существует .NET-объект, который обладает нужной функциональностью. Например, большинство командлетов PowerShell 1.0 не поддерживают работу с удаленными компьютерами, в частности нельзя управлять журналами событий операционной системы на удаленном компьютере. Однако можно в оболочке создать экземпляр .NET-объекта System.Diagnostics.EventLog, сопоставив его с журналом событий на определенном компьютере и воспользоваться методами этого объекта для очистки журнала или настройки параметров протоколирования событий.
Также в .NET имеются классы, экземпляры которых нельзя создать с помощью командлета New-Object. Такие классы называются статическими, так как они не создаются, не уничтожаются и не меняются. В частности, статическим является класс System.Math, методы которого часто используются для математических вычислений.
Для обращения к статическому классу его имя следует заключить в квадратные скобки, например:
PS C:\> [System.Math]
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False Math System.Object
Методы статического класса также называются статическими. Для просмотра статических методов класса нужно передать имя этого класса (в квадратных скобках) по конвейеру командлету Get-Member с параметром Static:
PS C:\> [System.Math] | Get-Member -Static
TypeName: System.Math
Name MemberType Definition
---- ---------- ----------
Abs Method static System.Single Abs(Single value), stati. . .
Acos Method static System.Double Acos(Double d)
Asin Method static System.Double Asin(Double d)
Atan Method static System.Double Atan(Double d)
Atan2 Method static System.Double Atan2(Double y, Double x. . .
BigMul Method static System.Int64 BigMul(Int32 a, Int32 b)
Ceiling Method static System.Double Ceiling(Double a), stati. . .
Cos Method static System.Double Cos(Double d)
Cosh Method static System.Double Cosh(Double value)
DivRem Method static System.Int32 DivRem(Int32 a, Int32 b, . . .
Equals Method static System.Boolean Equals(Object objA, Obj. . .
Exp Method static System.Double Exp(Double d)
Floor Method static System.Double Floor(Double d), static. . .
IEEERemainder Method static System.Double IEEERemainder(Double x, . . .
Log Method static System.Double Log(Double d), static Sy. . .
Log10 Method static System.Double Log10(Double d)
Max Method static System.SByte Max(SByte val1, SByte val. . .
Min Method static System.SByte Min(SByte val1, SByte val. . .
Pow Method static System.Double Pow(Double x, Double y)
ReferenceEquals Method static System.Boolean ReferenceEquals(Object. . .
Round Method static System.Double Round(Double a), static. . .
Sign Method static System.Int32 Sign(SByte value), static. . .
Sin Method static System.Double Sin(Double a)
Sinh Method static System.Double Sinh(Double value)
Sqrt Method static System.Double Sqrt(Double d)
Tan Method static System.Double Tan(Double a)
Tanh Method static System.Double Tanh(Double value)
Truncate Method static System.Decimal Truncate(Decimal d), st. . .
E Property static System.Double E {get;}
PI Property static System.Double PI {get;}
18.12.
Как мы видим, методы класса System.Math реализуют различные математические функции, их легко распознать по названию.
Для доступа к определенному статическому методу или свойству используются два идущих подряд двоеточия ( ::), а не точка ( .), как в обычных объектах. Например, для вычисления квадратного корня из числа (статического метода Sqrt ) и сохранения результата в переменную используется следующая конструкция:
PS C:\> $a=[System.Math]::Sqrt(25)
PS C:\> $a
Дата добавления: 2018-03-01; просмотров: 455;