Вопрос по лекции 7, где рассматривается взаимодействие со сторонними программами, в том числе эмуляция нажатия кнопок клавиатуры WshShell.SendKeys. Вопрос в том что во время автоматизации может потребоваться не нажатие клавиатуры, а нажатие кнопок в сообщениях этих программ. Можно вытащить информацию о объекте (кнопке) скажем с помощью AutoIt Info, или ориентироваться скажем на текст на кнопке..., но как на эту кнопку нажать? (без обхода по клавиатуре) |
Форматы вывода данных WMIC. Типичные команды для администрирования
Вывод свойств операционной системы
С помощью псевдонима OS можно просмотреть различные свойства операционной системы, которые могут быть весьма полезны администратору (например, в свойстве LastBootUpTime содержится время последней загрузки системы). Следующая команда выводит все свойства псевдонима OS в текстовый файл os.txt (листинг 15.2):
/OUTPUT:C:\os.txt OS GET /VALUE
Замечание
Свойства CurrentTimeZone, Description, ForegroundApplicationBoost, QuantumLength и QuantumType у псевдонима OS доступны для записи.
BootDevice=\Device\HarddiskVolume1 BuildNumber=2600 BuildType=Uniprocessor Free Caption=Microsoft Windows XP Professional CodeSet=1251 CountryCode=7 CreationClassName=Win32_OperatingSystem CSCreationClassName=Win32_ComputerSystem CSDVersion=Service Pack 2 CSName=404-POPOV CurrentTimeZone=240 DataExecutionPrevention_32BitApplications=FALSE DataExecutionPrevention_Available=FALSE DataExecutionPrevention_Drivers=FALSE DataExecutionPrevention_SupportPolicy=2 Debug=FALSE Description=Microsoft Windows XP Professional Distributed=FALSE EncryptionLevel=168 ForegroundApplicationBoost=2 FreePhysicalMemory=66448 FreeSpaceInPagingFiles=327124 FreeVirtualMemory=2056540 InstallDate=20060518120320.000000+240 LargeSystemCache=0 LastBootUpTime=20070919081646.682500+240 LocalDateTime=20070919160053.807000+240 Locale=0419 Manufacturer=Microsoft Corporation MaxNumberOfProcesses=-1 MaxProcessMemorySize=2097024 Name=Microsoft Windows XP Professional|C:\WINDOWS|\Device\Harddisk0\Partition1 NumberOfLicensedUsers= NumberOfProcesses=36 NumberOfUsers=2 Organization=SBRF OSLanguage=1049 OSProductSuite= OSType=18 OtherTypeDescription= PlusProductID= PlusVersionNumber= Primary=TRUE ProductType=1 QuantumLength=0 QuantumType=0 RegisteredUser=Evg SerialNumber=55683-640-7090775-23275 ServicePackMajorVersion=2 ServicePackMinorVersion=0 SizeStoredInPagingFiles=639676 Status=OK SuiteMask=272 SystemDevice=\Device\HarddiskVolume1 SystemDirectory=C:\WINDOWS\system32 SystemDrive=C: TotalSwapSpaceSize= TotalVirtualMemorySize=2097024 TotalVisibleMemorySize=259820 Version=5.1.2600 WindowsDirectory=C:\WINDOWSЛистинг 15.2. Информация об операционной системе
Получение информации о процессоре
Получить информацию об установленных процессорах можно с помощью псевдонима CPU. В свойстве DeviceID этого псевдонима хранится идентификатор процессора ( CPU0, CPU1 и т. д.), в свойстве Name — имя процессора, в CurrentClockSpeed — текущая частота и т. д. В листинге 15.3 представлено содержимое файла cpu.txt с информацией об одном процессоре. Файл cpu.txt сформирован с помощью следующей команды:
/OUTPUT:C:\cpu.txt CPU GET /VALUE
Замечание
Изменять значения свойств у псевдонима CPU нельзя.
AddressWidth=32 Architecture=0 Availability=3 Caption=x86 Family 6 Model 8 Stepping 10 ConfigManagerErrorCode= ConfigManagerUserConfig= CpuStatus=1 CreationClassName=Win32_Processor CurrentClockSpeed=897 CurrentVoltage=22 DataWidth=32 Description=x86 Family 6 Model 8 Stepping 10 DeviceID=CPU0 ErrorCleared= ErrorDescription= ExtClock=100 Family=15 InstallDate= L2CacheSize=128 L2CacheSpeed=897 LastErrorCode= Level=6 LoadPercentage=0 Manufacturer=GenuineIntel MaxClockSpeed=897 Name=Процессор Intel Celeron OtherFamilyDescription= PNPDeviceID= PowerManagementSupported=FALSE ProcessorId=0383F9FF0000068A ProcessorType=3 Revision=2058 Role=CPU SocketDesignation=Socket 370 Status=OK StatusInfo=3 Stepping=10 SystemCreationClassName=Win32_ComputerSystem SystemName=POPOV UniqueId= UpgradeMethod=1 Version=Модель 8, Выпуск 10 VoltageCaps=Листинг 15.3. Информация о процессоре
Получение информации об оперативной памяти
Получить сведения об оперативной памяти можно с помощью трех псевдонимов WMIC: MEMPHYSICAL (информация о физической памяти), MEMCACHE (информация о кэш-памяти) и MEMLOGICAL (информация о логической памяти). Запустим команду MEMLOGICAL GET /VALUE:
wmic:root\cli>MEMLOGICAL GET /VALUE AvailableVirtualMemory=293476 Caption=Конфигурация логической памяти Description=Конфигурация логической памяти Name=LogicalMemoryConfiguration SettingID=LogicalMemoryConfiguration TotalPageFileSpace=639676 TotalPhysicalMemory=259820 TotalVirtualMemory=899496
Как мы видим, псевдоним MEMLOGICAL позволяет, в частности, узнать общий объем физической памяти (свойство TotalPhysicalMemory ) и объем виртуальной памяти (свойство TotalVirtualMemory ).
Получение информации о свойствах и состоянии служб
Получить доступ к сведениям о зарегистрированных в системе службах можно с помощью псевдонима SERVICE. Например, для того чтобы сформировать HTML-таблицу, содержащую информацию о состоянии всех зарегистрированных служб на компьютерах \\Server1 и \\Server2, можно выполнить следующую команду:
/NODE:Server1,Server2 /OUTPUT:C:\service.htm SERVICE GET Name, DisplayName, State /FORMAT:HTABLE
Замечание
Изменять значения свойств псевдонима SERVICE нельзя.
Запуск и остановка служб
У псевдонима SERVICE имеются несколько методов, с помощью которых можно, в частности, запускать и останавливать службы на локальном или удаленном компьютере.
Для запуска служб предназначен метод StartService. Например, для того чтобы запустить службы Microsoft SQL Server на сервере \\Server1, нужно выполнить следующую команду:
/NODE:Server1 SERVICE WHERE(Name="MSSQLSERVER") CALL StartService
Для остановки этой же службы используется метод StopService:
/NODE:Server1 SERVICE WHERE(Name="MSSQLSERVER") CALL StopService
Создание и завершение процессов
Для создания новых процессов используется метод Create псевдонима PROCESS, в качестве обязательного параметра которого указывается путь к запускаемому исполняемому файлу. Например, следующая команда откроет стандартный Блокнот Windows:
PROCESS CALL Create Notepad.exe
Отметим, что при таком использовании метода Create нужно следить за параметром ReturnValue, ненулевое значение которого служит индикатором ошибки, произошедшей во время выполнении метода. Если же ReturnValue равно нулю, то значит метод Create выполнился успешно. Завершить процесс можно с помощью метода Terminate:
PROCESS WHERE (Name="Notepad.exe") CALL Terminate
У метода Terminate также есть выходной параметр ReturnValue, который здесь имеет тот же смысл, что и в методе Create.