Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Медленно работает скрипт

Ответить
Настройки темы
PowerShell - [решено] Медленно работает скрипт

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Существует такой скрипт на ps:

Get-WmiObject -Class Win32_Processor | ForEach-Object -Process {
"ЦПУ: {0}" -f $_.Name
}
Get-WmiObject -Class Win32_Processor | ForEach-Object -Process {
" ({0})" -f $_.Description
}
Get-WmiObject -Class Win32_Processor | ForEach-Object -Process {
" {0} Ядра Кэш 2: {1} Kb Кэш 3: {2} Kb " -f $_.NumberOfCores , $_.L2CacheSize , $_.L3CacheSize
}

Он показывает информацию в удобном для меня виде. Но работает очень медленно, секунды 3. Это только часть общего скрипта, где-то 1/10 часть. Остальной кусок выводит информацию за 1 секунду подобным методом. Если кто знает, объясните, в чём проблема. Почему именно эта часть работает так медленно, и как это исправить?

Отправлено: 22:21, 04-12-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Делайте вывод в одном цикле ForEach-Object.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:18, 04-12-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, Это не ответ. Например вот этот код:

Get-WmiObject -Class Win32_PhysicalMemory | ForEach-Object -Process {
"{0} {1} {2} {3} MHz Размер: {4:n} Gb" -f $_.BankLabel, $_.DeviceLocator, $_.PartNumber, $_.Speed, $($_.Capacity / 1Gb)
}
Get-WmiObject -Class Win32_PhysicalMemoryArray | ForEach-Object -Process {
" Количeство слотов: {0}" -f $_.MemoryDevices
}
Get-WmiObject -Class Win32_PhysicalMemoryArray | ForEach-Object -Process {
" Максимальный размер памяти: {0} Gb" -f $($_.MaxCapacity / 1Mb)
}

Отрабатывает за полсекунды. Тормоза именно в Win32_Processor. Может кто сталкивался с такой проблемой? У меня даже идей нет, почему он тормозит при обработке инфы процессора. Либо посоветуйте альтернативный вывод, чтоб его можно было использовать в powershell без тормозов.

Отправлено: 23:59, 04-12-2015 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Т.к. запрашиваются все свойства, а для вычисления LoadPercentage требуется примерно 1 секунда и три вызовова, то и получается примерно 3 секунды и больше.

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Load capacity of each processor, averaged to the last second. Processor loading refers to the total computing burden for each processor at one time. This property is inherited from CIM_Processor.

Код: Выделить весь код
PS >  measure-command {Get-WmiObject -Class Win32_Processor -Property LoadPercentage}


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 1
Milliseconds      : 75
Ticks             : 10752407
TotalDays         : 1,24449155092593E-05
TotalHours        : 0,000298677972222222
TotalMinutes      : 0,0179206783333333
TotalSeconds      : 1,0752407
TotalMilliseconds : 1075,2407
Код: Выделить весь код
PS >  measure-command {Get-WmiObject -Class Win32_Processor -Property Name,Description ,NumberOfCores , L2CacheSize ,
 L3CacheSize }


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 11
Ticks             : 118357
TotalDays         : 1,36987268518519E-07
TotalHours        : 3,28769444444444E-06
TotalMinutes      : 0,000197261666666667
TotalSeconds      : 0,0118357
TotalMilliseconds : 11,8357

Код: Выделить весь код
Get-WmiObject -Class Win32_Processor  -Property Name,Description ,NumberOfCores , L2CacheSize ,L3CacheSize | ForEach-Object -Process {
 "ЦПУ: {0}" -f $_.Name 
 "({0})" -f $_.Description 
 "{0} Ядра Кэш 2: {1} Kb Кэш 3: {2} Kb " -f $_.NumberOfCores , $_.L2CacheSize , $_.L3CacheSize 
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:18, 05-12-2015 | #4


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun, спасибо, всё быстро заработало. Просто я ещё не въехал в особенности PS. После bat реально путаюсь в определениях. А оказывается, всё весьма просто.

Отправлено: 01:56, 05-12-2015 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Медленно работает скрипт

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
У друга медленно компьютер работает Stacker Лечение систем от вредоносных программ 14 13-12-2013 23:09
HDD - Медленно работает диск (диски) Hunter_t1000 Накопители (SSD, HDD, USB Flash) 11 08-12-2013 22:58
Прочее - Медленно работает сеть. RasKolbas Сетевые технологии 6 20-06-2010 01:07
Flash - Флэшка работает медленно petr.kirin Накопители (SSD, HDD, USB Flash) 6 16-06-2010 14:25
2008 R2 - медленно работает DNS info9216 Windows Server 2008/2008 R2 9 04-05-2010 15:14




 
Переход