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

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

Ответить
Настройки темы
PowerShell - Данные о системе

Аватара для Sergey666

Пользователь


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

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


Добрый день!
Сразу оговорюсь это мой первый код на PowerShell
Есть код, Выводит данные о системе. Но в итоговом файле почему-то получается много лишних пустых строк.
Для начала может кто-нибудь помочь это поправить?
Собственно сам код:

# Имя компьютера
"Имя компьютера" |out-file i:\\distrib\proc.txt
$systeminfo = Get-WmiObject -Class Win32_ComputerSystem
$name = '{0}.{1}' -f $systeminfo.DNSHostName, $systeminfo.Domain
$name |out-file i:\\distrib\proc.txt -append
# Операционная система
"Операционная система" |out-file i:\\distrib\proc.txt -append
$systeminfo = Get-CimInstance -ClassName Win32_OperatingSystem
$systeminfo | fl Caption, InstallDate |out-file i:\\distrib\proc.txt -append
# Процессор
"Процессор" |out-file i:\\distrib\proc.txt -append
$cpuinfo = Get-CimInstance -ClassName CIM_Processor
$cpuinfo | fl Name, CurrentClockSpeed |out-file i:\\distrib\proc.txt -append
# Оперативная память
"Оперативная память" |out-file i:\\distrib\proc.txt -append
Get-WMIObject -class win32_physicalmemory |
Measure-Object -Property capacity -Sum |
select @{N="Total Physical Ram"; E={[math]::round(($_.Sum / 1MB),2)}} |out-file i:\\distrib\proc.txt -append
# Свободное место на диске
"Свободное место на диске" |out-file i:\\distrib\proc.txt -append
Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" | Select DeviceID,@{Name="size(GB)";Expression={"{0:N1}" -f($_.size/1gb)}},@{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | Format-Table -AutoSize |out-file i:\\distrib\proc.txt -append

-------
Авторский курс «Ликвидация компьютерной безграмотности»
lkb.aizetx.ru


Отправлено: 08:37, 12-04-2019

 

Старожил


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

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


Вот ваш отредактированный
Ваш вариант

Код: Выделить весь код
# Имя компьютера
$file="C:\temp\1.txt"
"Имя компьютера" |out-file $file
$systeminfo = Get-WmiObject -Class Win32_ComputerSystem
$name = '{0}.{1}' -f $systeminfo.DNSHostName, $systeminfo.Domain 
$name  |out-file $file -append
# Операционная система
"Операционная система" |out-file $file -append
$systeminfo = Get-CimInstance -ClassName Win32_OperatingSystem 
($systeminfo | fl Caption, InstallDate |Out-String).trim()|out-file $file -append
# Процессор
"Процессор"  |out-file $file -append
$cpuinfo = Get-CimInstance -ClassName CIM_Processor
($cpuinfo | fl Name, CurrentClockSpeed  |Out-String).trim()|out-file $file -append
# Оперативная память
"Оперативная память" |out-file $file -append
(Get-WMIObject -class win32_physicalmemory | 
Measure-Object -Property capacity -Sum | 
select @{N="Total Physical Ram"; E={[math]::round(($_.Sum / 1MB),2)}} | Out-String).trim() |out-file $file -append
# Свободное место на диске
"Свободное место на диске" |out-file $file -append
(Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" | Select DeviceID,@{Name="size(GB)";Expression={"{0:N1}" -f($_.size/1gb)}},@{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | Format-Table -AutoSize |Out-String).trim()|out-file $file -append

Добавляет он строчки из-за Format-List (fl). В вашем скрипте, просто сделал trim в каждом выводе.
Ну и так бонусом второй вариант

Еще вариант

Код: Выделить весь код
$file="C:\temp\2.txt"
$infoObject = New-Object PSObject
$OSInfo  = Get-WmiObject  Win32_OperatingSystem
$HOSTNAME = Get-WmiObject -Class Win32_ComputerSystem | select DNSHostName, Domain
$OS = Get-CimInstance -ClassName Win32_OperatingSystem  | select  Caption, InstallDate 
$CPU = Get-CimInstance -ClassName CIM_Processor | Select Name, CurrentClockSpeed
$RAM=Get-WMIObject -class win32_physicalmemory | Measure-Object -Property capacity -Sum | select @{N="Total Physical Ram"; E={[math]::round(($_.Sum / 1MB),2)}}
$HDDFree=Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" | Select DeviceID, FreeSpace, Size
 
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Имя компьютера" -value ($HOSTNAME.DNSHostName+"."+$HOSTNAME.Domain).trim()
Add-Member -inputObject $infoObject -memberType NoteProperty -name "ОС" -value $OS.Caption
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Дата установки ОС" -value $OS.InstallDate
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Процессор" -value $CPU.Name
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Частота процессора" -value $CPU.CurrentClockSpeed
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Оперативная память" -value $RAM.'Total Physical Ram'

foreach ($HDD in $HDDFree )
{
  $Razdel=$HDD.DeviceID
  Add-Member -inputObject $infoObject -memberType NoteProperty -name "Свободное место раздела $Razdel"  -value  ([math]::Round(($HDD.FreeSpace)/1gb))
  Add-Member -inputObject $infoObject -memberType NoteProperty -name "Занятое место раздела $Razdel" -value ([math]::Round(($HDD.Size)/1gb))
}


($infoObject | fl * | Out-String).Trim() | out-file $file


Ну и отредактировал куда выводится результат в первом случае C:\temp\1.txt, во втором случае в C:\temp\2.txt

Последний раз редактировалось Molchune, 12-04-2019 в 16:17.


Отправлено: 11:09, 12-04-2019 | #2



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

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


Аватара для Sergey666

Пользователь


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

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


Второй вариант не работает:

Get-WmiObject : Не удается проверить аргумент для параметра "ComputerName". Аргумент пустой или имеет значение NULL. Ук
ажите непустой аргумент, не имеющий значение NULL, после чего повторите выполнение команды.
строка:3 знак:32
+ $OSInfo = Get-WmiObject -comp $PC_name Win32_OperatingSystem
+ ~~~~~~~~
+ CategoryInfo : InvalidData: ( [Get-WmiObject], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Цитата Molchune:
Вот ваш отредактированный »
Это уже намного ближе к идеалу, вот только как бы ещё "---------------------------" убрать

-------
Авторский курс «Ликвидация компьютерной безграмотности»
lkb.aizetx.ru


Отправлено: 11:18, 12-04-2019 | #3


Ветеран


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

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


Molchune, второй вариант неоправданно усложнён - что мешает сразу проинициализировать hashTable нужными значениями без временных переменных и Add-Member?

Отправлено: 11:32, 12-04-2019 | #4


Старожил


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

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


Цитата Busla:
Molchune, второй вариант неоправданно усложнён - что мешает сразу проинициализировать hashTable нужными значениями без временных переменных и Add-Member? »
Как по мне более наглядней просто.
Цитата Sergey666:
Get-WmiObject : Не удается проверить аргумент для параметра "ComputerName". Аргумент пустой или имеет значение NULL. »
Да ошибся при переносе. отредактировал в оригинальном посте.
Цитата Sergey666:
Это уже намного ближе к идеалу, вот только как бы ещё "---------------------------" убрать »
Ну тогда только расписывать отдельно по каждому возможному диску. (Внес правки тоже)

Последний раз редактировалось Molchune, 12-04-2019 в 16:15.


Отправлено: 14:09, 12-04-2019 | #5


(*.*)


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

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


См. также https://www.outsidethebox.ms/15841/

Отправлено: 13:38, 15-04-2019 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Восстановить утерянные данные в системе после краха Rollback RX DeepWaters Microsoft Windows 10 0 16-03-2019 08:43
[решено] Операционной системе требуются ваши учетные данные fraid Windows Server 2012/2012 R2 4 26-03-2013 14:05
CMD/BAT - Как на 64-разрядной системе внести данные из reg файла? SvoiLudi Скриптовые языки администрирования Windows 8 10-04-2010 12:56
Интерфейс - изменить данные о системе PLATON Microsoft Windows 2000/XP 2 19-02-2010 19:37
Доступ к системе есть. Узнать каким образом публикуются в Сеть данные в виде сайта. Denis1983 Вебмастеру 8 14-01-2007 04:37




 
Переход