Мне нужно информация о процессоре, ОС, сетевых адаптеров, память. Я просто плохо разбираюсь, желательно конечно максимально информации вытащить. Просто мы собираемся кинуть батник в наш домен, и потом с отчётов сделать таблицу.Можно конечно и так:
Код:systeminfo > D:\Bat\Reports\Reports_%computername%.txt
А Вы какую информацию о компьютере хотите заполучить?
@Echo off
setlocal enableextensions enabledelayedexpansion
set cdtime=%date:~-10%
if not exist "%~dp0GetInfoYouPC" md "%~dp0GetInfoYouPC"
For /F "Delims=" %%I In (%~dp0pc.list) Do (
Set cpcname=%%~I
set cfile="%~dp0GetInfoYouPC/!cpcname!_%cdtime%.txt"
ping -n 1 !cpcname! | find "TTL"
if !errorlevel!==0 (
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC OS GET Caption^,Version^,OSArchitecture^,InstallDate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Операционная система: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC CPU GET socketdesignation^, Name^, MaxClockSpeed /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Процессор: %%C,%%B" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC memorychip get banklabel^, capacity^, devicelocator /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Оперативная память: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3 Delims==:" %%A In ('WMIC COMPUTERSYSTEM GET TotalPhysicalMemory /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Оперативная память(в): %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC BASEBOARD GET Manufacturer^, Product /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Материнская плата: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC BIOS GET Description^, SMBIOSBIOSVersion /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Версия BIOS: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC path Win32_VideoController GET Name^, AdapterRAM /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Видеокарта: %%C,%%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC path Win32_VideoController GET VideoModeDescription /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Разрешение экрана: %%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC DISKDRIVE Where ^"InterfaceType^=^'IDE^' or InterfaceType^=^'SCSI^'^" GET Model^, Size^, SerialNumber /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Жесткий диск: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC path Win32_CDROMDrive GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Привод: %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC path Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^" GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Сетевая карта: %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC path Win32_SoundDevice GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Звуковая карта: %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==," %%A In ('WMIC product get name^, version^, installdate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "2" "Установленное ПО: %%B (%%C) (%%A)" "" "!cfile!"
)
)
GoTo :EOF
:_Func
CHCP 1251 1>nul
If %~1 EQU 1 Echo.%~2 >%4
If %~1 GTR 1 Echo.%~2 >>%4
CHCP 866 >nul
ABC1PC
ABC2PC
SUPERPC
SERVER
Он так и остаётся в текстовом файле?Рядом с файлом сценарием создаёте текстовый файл pc.list с указанием АРМ, что-то типа того:
#Собираем данные
$computerSystem = Get-CimInstance CIM_ComputerSystem
$windowsInfo = Get-CimInstance -ClassName win32_operatingsystem
$username = $env:USERNAME
$computername = $env:COMPUTERNAME
$vendor = Get-CimInstance -ClassName Win32_ComputerSystemProduct | foreach { $_.vendor }
$computerver = Get-CimInstance -ClassName Win32_ComputerSystemProduct | foreach { $_.version }
$serial = get-wmiobject win32_bios | foreach { $_.serialnumber }
$computerCPU = Get-CimInstance CIM_Processor |foreach { $_.Name }
$computerHDD = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID = 'C:'"
$lastboot = Get-CimInstance CIM_OperatingSystem
$timeformat='MM-dd-yyyy hh:mm:ss tt'
$time = (Get-Date).ToString($timeformat)
$model = $computerSystem.Model
$HDD = "{0:N2}" -f ($computerHDD.Size/1GB)
$HDDFree = "{0:N2}" -f ($computerHDD.FreeSpace/1GB)
$RAM = "{0:N2}" -f ($computerSystem.TotalPhysicalMemory/1GB)
$Build = $windowsInfo.Version
$lastbootUP = $lastboot.LastBootUpTime
#Подключаемся к базе
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = "Server=Сервер БД;Database=Имя Базы;User ID=Пользователь;Password=Пароль;"
#$connection.ConnectionString = "Data Source=Сервер БД,1433;Initial Catalog=Имя базы данных;Integrated Security=SSPI;"
$connection.Open()
#Вставляем данные в базу
$cmd = New-Object System.Data.SqlClient.SqlCommand
$cmd.connection = $connection
$cmd.CommandText = "INSERT INTO BaseTable (Datetime,Username,Computer,vendor,model, compversion,Serial,CPU,HDD,HDDFree,RAM,Build,lastboot)
VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}')" -f
$time,$username,$computername,$vendor, $model, $computerver,$serial,$computerCPU , $HDD, $HDDFree,$RAM,$Build, $lastbootUP
$cmd.ExecuteNonQuery()
#Закрываем соединение
$connection.Close()
Он, это кто?Он так и остаётся в текстовом файле?
pc.list файлОн, это кто?
Да, этот файл просто содержит имена компьютеров в сети к которым требуется обратиться. Вы его можете формировать сами, или автоматически запросом к AD.pc.list файл
Понял, спасибо большое, вы очень помогли.Да, этот файл просто содержит имена компьютеров в сети к которым требуется обратиться. Вы его можете формировать сами, или автоматически запросом к AD.
Для начала просто протестируйте и поймите, нужно это Вам или нет.
Рано благодарить, испытайте.вы очень помогли.
@Echo off
setlocal enableextensions enabledelayedexpansion
set cdtime=%date:~-10%
if not exist "%~dp0GetInfoYouPC" md "%~dp0GetInfoYouPC"
For /F "Delims=" %%I In (%~dp0pc.list) Do (
Set cpcname=%%~I
set cfile="%~dp0GetInfoYouPC/!cpcname!_%cdtime%.txt"
ping -n 1 !cpcname! | find "TTL"
if !errorlevel!==0 (
For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC /node:!cpcname! OS GET Caption^,Version^,OSArchitecture^,InstallDate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Операционная система: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! CPU GET socketdesignation^, Name^, MaxClockSpeed /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Процессор: %%C,%%B" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! memorychip get banklabel^, capacity^, devicelocator /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Оперативная память: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3 Delims==:" %%A In ('WMIC /node:!cpcname! COMPUTERSYSTEM GET TotalPhysicalMemory /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Оперативная память(в): %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! BASEBOARD GET Manufacturer^, Product /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Материнская плата: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! BIOS GET Description^, SMBIOSBIOSVersion /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Версия BIOS: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! path Win32_VideoController GET Name^, AdapterRAM /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Видеокарта: %%C,%%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_VideoController GET VideoModeDescription /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Разрешение экрана: %%C" "" "!cfile!"
For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! DISKDRIVE Where ^"InterfaceType^=^'IDE^' or InterfaceType^=^'SCSI^'^" GET Model^, Size^, SerialNumber /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Жесткий диск: %%B,%%C" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_CDROMDrive GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Привод: %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^" GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Сетевая карта: %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_SoundDevice GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Звуковая карта: %%B" "" "!cfile!"
For /F "Tokens=2,3* Delims==," %%A In ('WMIC /node:!cpcname! product get name^, version^, installdate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "2" "Установленное ПО: %%B (%%C) (%%A)" "" "!cfile!"
)
)
GoTo :EOF
:_Func
CHCP 1251 1>nul
If %~1 EQU 1 Echo.%~2 >%4
If %~1 GTR 1 Echo.%~2 >>%4
CHCP 866 >nul
В общем, я вставил код в блокнот, сделал бат файл, он создаёт папку, а в неё ничего не подтягивает, создал так же текстовик pc.list, всё та же проблема.Рано благодарить, испытайте.
Выше не тот сценарий указал (он работает только для локального АРМ), исправляюсь:
Код:@Echo off setlocal enableextensions enabledelayedexpansion set cdtime=%date:~-10% if not exist "%~dp0GetInfoYouPC" md "%~dp0GetInfoYouPC" For /F "Delims=" %%I In (%~dp0pc.list) Do ( Set cpcname=%%~I set cfile="%~dp0GetInfoYouPC/!cpcname!_%cdtime%.txt" ping -n 1 !cpcname! | find "TTL" if !errorlevel!==0 ( For /F "Tokens=1,3* Delims=,:" %%A In ('WMIC /node:!cpcname! OS GET Caption^,Version^,OSArchitecture^,InstallDate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Операционная система: %%B,%%C" "" "!cfile!" For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! CPU GET socketdesignation^, Name^, MaxClockSpeed /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Процессор: %%C,%%B" "" "!cfile!" For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! memorychip get banklabel^, capacity^, devicelocator /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Оперативная память: %%B,%%C" "" "!cfile!" For /F "Tokens=2,3 Delims==:" %%A In ('WMIC /node:!cpcname! COMPUTERSYSTEM GET TotalPhysicalMemory /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Оперативная память(в): %%B" "" "!cfile!" For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! BASEBOARD GET Manufacturer^, Product /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Материнская плата: %%B,%%C" "" "!cfile!" For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! BIOS GET Description^, SMBIOSBIOSVersion /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Версия BIOS: %%B,%%C" "" "!cfile!" For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! path Win32_VideoController GET Name^, AdapterRAM /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Видеокарта: %%C,%%B" "" "!cfile!" For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_VideoController GET VideoModeDescription /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Разрешение экрана: %%C" "" "!cfile!" For /F "Tokens=2,3* Delims=,:" %%A In ('WMIC /node:!cpcname! DISKDRIVE Where ^"InterfaceType^=^'IDE^' or InterfaceType^=^'SCSI^'^" GET Model^, Size^, SerialNumber /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "%%A" "Жесткий диск: %%B,%%C" "" "!cfile!" For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_CDROMDrive GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Привод: %%B" "" "!cfile!" For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_NetworkAdapter Where ^"AdapterTypeId^=0 And NetConnectionStatus^=2^" GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Сетевая карта: %%B" "" "!cfile!" For /F "Tokens=2,3* Delims==:" %%A In ('WMIC /node:!cpcname! path Win32_SoundDevice GET Name /VALUE^|FindStr .^|FindStr /n .') Do Call :_Func "%%A" "Звуковая карта: %%B" "" "!cfile!" For /F "Tokens=2,3* Delims==," %%A In ('WMIC /node:!cpcname! product get name^, version^, installdate /FORMAT:CSV^|FindStr .^|More +1^|FindStr /n .') Do Call :_Func "2" "Установленное ПО: %%B (%%C) (%%A)" "" "!cfile!" ) ) GoTo :EOF :_Func CHCP 1251 1>nul If %~1 EQU 1 Echo.%~2 >%4 If %~1 GTR 1 Echo.%~2 >>%4 CHCP 866 >nul
С правами какого пользователя запускаете?а в неё ничего не подтягивает,
С правами администратора. А как именно обратится к АРМ? Возможно ли по айпи? Или какой то другой способ?С правами какого пользователя запускаете?
Какого администратора?С правами администратора.
Можно;Возможно ли по айпи?
Что Вы понимаете под др. способом?Или какой то другой способ?
Есть права для удалённого подключения.Какого администратора?
Другой способ имелось ввиду помимо айпи.Что Вы понимаете под др. способом?
Сценарий можно чуть чуть переделать и запускать локально на каждом АРМ, а не удалённо от доменного администратора/ пользователя с достаточными правами для удалённого подключения к АРМ.
После создаю текстовик pc.list и я так понимаю что вставляю туда айпи компьютеров.Выше не тот сценарий указал (он работает только для локального АРМ), исправляюсь:
undefined
Понял, спасибо, буду пробовать0. Создаёте для удобства папку по короткому пути, пусть будет "c:\Test";
1. В папке создаете *.cmd сценарий из этого сообщения копирую содержимое тэга код под спойлером;
2. В папке создаёте файл "pc.list" в котором построчно прописываете либо имя АРМ, либо его IP;
3. От имени доменного администратора запускаете сценарий созданный в п.1;
4. В папке из п.0 создастся папка "GetInfoYouPC" в которой окажутся текстовые файлы с полученной информацией от АРМ.
Сам сценарий простой, в нём, с помощью команды ping проверяется доступность АРМ в сети, после чего с помощью инструментария WMIC запрашивается системная информация, затем, которая, способом перенаправления вывода записывается в создаваемый текстовый файл с именем/ IP АРМ.
Пишет, что CMD не поддерживает UNC. Я кинул файлы в сеть, по умолчанию выбрана системная папка Windows, не знаете что делать?0. Создаёте для удобства папку по короткому пути, пусть будет "c:\Test";
1. В папке создаете *.cmd сценарий из этого сообщения копирую содержимое тэга код под спойлером;
2. В папке создаёте файл "pc.list" в котором построчно прописываете либо имя АРМ, либо его IP;
3. От имени доменного администратора запускаете сценарий созданный в п.1;
4. В папке из п.0 создастся папка "GetInfoYouPC" в которой окажутся текстовые файлы с полученной информацией от АРМ.
Сам сценарий простой, в нём, с помощью команды ping проверяется доступность АРМ в сети, после чего с помощью инструментария WMIC запрашивается системная информация, затем, которая, способом перенаправления вывода записывается в создаваемый текстовый файл с именем/ IP АРМ.
Вы инструкцию отработали?не знаете что делать?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?