Пример — сценарии монитора производительности PowerShell
Для сценария монитора производительности PowerShell есть два созданных экземпляра объектов для поддержки успешного выполнения:
- . Реализация интерфейса IScriptContext. Этот объект предоставляет доступ к переменным среды выполнения а также механизм для возврата результатов клиенту. Несколько методов перечислены далее.
- object GetReferenceVariable(string variableName) дает возможность извлечения ранее настроенных значений ссылочных переменных по имени.
- object GetProperty(string propertyName) дает возможность извлечения значений контекстных переменных по имени.
- void SetResult(int resultCode) дает возможность сценарию установить значение, указывающее на успешность выполнения, обычно 0 = успех 1 = ошибка.
- . Реализация интерфейса ILog. Этот объект дает доступ к методам, используемым к приложениям C#. Несколько полезных методов перечислены далее.
- void Error(string message) создает относящуюся к ошибке запись журнала, включающую сообщение.
- void Information(string message) создает относящуюся к информации запись журнала, включающую сообщение.
- void WriteLine(string message) создает универсальную запись журнала, включающую сообщение.
Контекстные переменные
Следующие контекстные переменные доступны для использования в сценариях мониторов производительности PowerShell:
- DeviceID
- DisplayName
- Address
- NetworkName
- Timeout
- CredWindows:DomainAndUserid
- CredWindows:Password
- CredSnmpV1:ReadCommunity
- CredSnmpV1:WriteCommunity
- CredSnmpV2:ReadCommunity
- CredSnmpV2:WriteCommunity
- CredSnmpV3:AuthPassword
- CredSnmpV3:AuthProtocol (значения: 1 = Нет, 2 = MD5, 3 = SHA)
- CredSnmpV3:EncryptProtocol (значения: 1 = Нет, 2 = DES56, 3 = AES128, 4 = AES192, 5 = AES256, 6 = THREEDES)
- CredSnmpV3:EncryptPassword
- CredSnmpV3:Username
- CredSnmpV3:Context
- CredADO:Password
- CredADO:Username
- CredSSH:Username
- CredSSH:Password
- CredSSH:EnablePassword
- CredSSH:Port
- CredSSH:Timeout
- CredVMware:Username
- CredVMware:Password
Тайм-аут сценария.
Можно установить значение тайм-аута сценария (в секундах). Если выполнение сценария не закончено после окончания периода тайм-аута, выполнение прерывается.
Минимум: 1
Максимум: 60
Стандартно: 60
Пример сценария #1
#
# Этот пример ищет процесс с именем 'outlook' и сообщает о его
# текущем количестве потоков.
#
# Используйте встроенный командлет с именем 'Get-Process', также имеющий псевдоним 'ps'
$processes = ps
$processName = "outlook"
$proc = $processes | where { $_.ProcessName -match $processName }
# Для сообщения о результатах монитор производительности должен вызвать процедуру Context.SetValue()
$Context.SetValue($proc.Threads.Count)
Пример сценария #2
#
# This example uses a reference variable to look for idle time
# levels and logs the results
#
# Use available context variables
$resultText = "Address: " + $Context.GetProperty("Address");
# Access the reference variable
$monitorValue = $Context.GetReferenceVariable("IdleTime")
# Log if necessary
$resultText = $resultText + ", Idle time: " + $monitorValue.ToString()
$Logger.WriteLine($resultText)
# Always set the performance value
$Context.SetValue($monitorValue);