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

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

Ответить
Настройки темы
PowerShell - [решено] Сбор данных с ПК

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


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

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


Добрый вечер.
При выполнении данного запроса:
Код: Выделить весь код
get-adcomputer -searchbase "OU=PC,OU=TET,DC=PC,DC=MEM" -filter {(name -like "*") -and (enable -eq "true")} -Properties name, IPv4Address, CanonicalName | select name, IPv4Address, CanonicalName | out-gridview
я получаю вполне красивую табличку с именем машины, IP, и её местонахождение в домене. Проблема в том что к данной табличке мне необходимо добавить ещё информацию, которая находится в двух разных местах:
1) информация находится в двух местах реестра. т.е. необходимо считать информацию в ветках реестра и выдать указанные там значение в разные столбцы в табличке.
2) информация актуальной версии рабочего приложения, данную информацию я смог извлечь WMIC командной:
Код: Выделить весь код
wmic.exe /interactive:off /failfast:on /node:127.0.0.1  datafile where "name='C:\\Offtop\\Top\\Top.exe'" get version
Которая возвращает результат типа:
Version
1.22.2.8
Но хотелось бы это сделать через PowerShell и получать результат в общей таблице.

Есть возможность такое провернуть с помощью PowerShell?

Отправлено: 23:45, 20-07-2018

 

Ветеран


Contributor


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

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


Busla, а вот соглашусь, коллега!

Отправлено: 02:16, 22-07-2018 | #11



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

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


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


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

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


Ну что, сможете помочь?

Отправлено: 17:20, 22-07-2018 | #12


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


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

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


Я бы сделал это так:

Код: Выделить весь код
$Info = @()

Get-AdComputer `
-filter {Enabled -eq $True} `
-SearchBase "OU=PC,OU=TET,DC=PC,DC=MEM" `
-Properties name, IPv4Address, CanonicalName | %{
	$CompName = $_.Name
	[string]$IPAddresses = ""
	Set-Service RemoteRegistry -ComputerName $CompName -Status Running -PassThru | Out-Null
	$NIC = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled='True'" -ComputerName $CompName

	$NIC | %{ $_.IPAddress.Split(",") | ?{ $_ -notlike "*:*" }} | %{ $IPAddresses += ($_ + ",") }
	
	$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $CompName )
	$RegKey1 = $Reg.OpenSubKey("SOFTWARE\RUSSIA\SU\CORE")
	$RegKey2 = $Reg.OpenSubKey("SOFTWARE\RUSSIA\SU\FDC\")
	
	$Member = New-Object PSObject -Property @{
		CompName = $CompName
		CanonicalName = $_.CanonicalName
		IPAddresses = $IPAddresses -replace (',$')
		RegVersion = $RegKey1.GetValue("SQLver")
		Setup = $RegKey2.GetValue("Setup")
		FileVersion = (Get-Item $("\\" + $CompName + "\C$\Offtop\Top\Top.exe") ).VersionInfo.ProductVersion
	}
	$Info += $Member
	
	Set-Service RemoteRegistry -ComputerName $CompName -Status Stopped -PassThru -ErrorAction SilentlyContinue | Out-Null
	
}
$Info | Out-GridView

Последний раз редактировалось Wheee111, 22-07-2018 в 23:19. Причина: Добавил тег CODE

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:33, 22-07-2018 | #13


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


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

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


Изображения
Тип файла: jpg 12315.jpg
(49.9 Kb, 6 просмотров)

Вот что выдаёт(см.картинку), и и не формирует табличку...

Отправлено: 01:06, 23-07-2018 | #14


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


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

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


В личке добавилось требование обработчика ошибок.

Код: Выделить весь код
$FilePath = "C$\Core Test\System\Core.exe"
$SearchBase = "OU=OFT,OU=SU,OU=PRM-CN,DC=contoso,DC=com"
$RegPath1 = "SOFTWARE\Soft Practic\RUSSIA"
$RegPath2 = "SOFTWARE\Soft Practic\Ver"
$RegKeyName1 = "System Version"
$RegKeyName2 = "Version"

$Info = @()

Get-AdComputer `
-Filter {Name -like "msk-004*" -and Enabled -eq $True} `
-SearchBase $SearchBase `
-Properties Name, CanonicalName | %{
	$CompName 	= $_.Name
	If ( Test-Connection $CompName -Count 1 -Quiet ) {
		[string]$IPAddresses = ""
		Try {
			$RegErr = $False
			Set-Service RemoteRegistry -ComputerName $CompName -Status Running -PassThru -EA SilentlyContinue | Out-Null
			$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $CompName )
		} Catch {
			$RegErr = $True
		}
		Try {
			$NICErr = $False
			$NIC = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled='True'" -ComputerName $CompName -EA SilentlyContinue
			$NIC | %{ $_.IPAddress.Split(",") | ?{ $_ -notlike "*:*" }} | %{ $IPAddresses += ($_ + ",") }
			$IPAddresses = ( $IPAddresses -replace (',$') )
		} Catch {
			$NICErr = $True
		}
		If ($RegErr) {
			$RegVersion = "Registry connection error"
			$Setup = "Registry connection error"
		} Else {
			$RegKey1 	= $Reg.OpenSubKey($RegPath1)
			$RegKey2 	= $Reg.OpenSubKey($RegPath2)
			
			$RegVersion = $RegKey1.GetValue($RegKeyName1)
			$Setup 		= $RegKey2.GetValue($RegKeyName2)
		}
		If ($NICErr) {
			$IPAddresses = "WMI Connection error"
		}
		If (Test-Path $("\\" + $CompName + "\" + $FilePath) ) {
			$FileVersion = (Get-Item $("\\" + $CompName + "\" + $FilePath) ).VersionInfo.ProductVersion
		} Else {
			$FileVersion = ""
		}
		
		Set-Service RemoteRegistry -ComputerName $CompName -Status Stopped -PassThru -ErrorAction SilentlyContinue | Out-Null
		
	} Else {
		$IPAddresses = "Offline"
		$RegVersion = ""
		$Setup = ""
		$FileVersion = ""
	}
	
	$Member = New-Object PSObject -Property @{
		CompName 		= $CompName
		CanonicalName 	= $_.CanonicalName
		IPAddresses 	= $IPAddresses
		RegVersion 		= $RegVersion
		Setup 			= $Setup
		FileVersion 	= $FileVersion
	}
	$Info += $Member
}
$Info | Out-GridView
# $Info | Export-CSV C:\Temp\ScanResult.CSV -Encoding UTF8 -Delimiter ";" -NoTypeInformation
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:27, 23-07-2018 | #15


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


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

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


Великолепно! Скрипт работает как нада!!!

Отправлено: 11:14, 23-07-2018 | #16


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


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

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


Столкнулся с такой проблемой, скрипт в некоторых OU не может собрать данные с какой то машины, и зависает. Вчера нашел одну из этих «вещающих скрипт машин» и зарустил скрипт только на неё, в итоге за сутки скрипт не выдал ошибку, но и не собрал данных, что это может быть?

Отправлено: 14:57, 25-07-2018 | #17


Ветеран


Contributor


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

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


Цитата Armsinglom:
что это может быть? »
Открываете консоль, исполняете в ней команды из скрипта по одной, определяете, где «висим». Это ж не пакетные файлы, тут так можно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:14, 25-07-2018 | #18


Старожил


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

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


интересно, а есть ли подобная
Цитата Armsinglom:
информация актуальной версии рабочего приложения, данную информацию я смог извлечь WMIC командной: »
информация о дате последнего апдейта для антивиря битдефендер?
Я в принуипе, могу залезть в файл, где лежат юникс даты, но не уверен, что там дата именно апдейта, а не попытки (неизвестно, успешной ли)

Отправлено: 15:33, 26-07-2018 | #19


Ветеран


Contributor


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

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


bredych, не уверен, что а) это возможно и б) что это нужно. Причём акцент здесь на слове «это».

Если указанный антивирус корректно работает с Центром безопасности ОС, попробуйте поиграться с Wbem, а именно с классом AntiVirusProduct пространства SecurityCenter/SecurityCenter2 (до-Vista/Vista+). Вас должно интересовать свойство .productState, его анализ и конечный вывод — антивирус в состоянии Up-to-date или Out-of-date, то есть базы его в актуальном состоянии, або нет.

Для PowerShell есть даже готовый код в Галерее: Script Get the status of Antivirus Product on local and Remote Computers..

Отправлено: 15:58, 26-07-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Франция требует от Microsoft прекратить «чрезмерный» сбор пользовательских данных в W OSZone News Новости и события Microsoft 3 23-07-2016 10:28
Microsoft расширяет сбор данных в Windows 7 и 8 OSZone News Новости и события Microsoft 1 29-08-2015 11:08
2007 - Excel сбор данных с нескольких файлов Streamnewal Microsoft Office (Word, Excel, Outlook и т.д.) 2 15-05-2014 05:39
Сбор ПК! Levondk Выбор отдельных компонентов компьютера и конфигурации в целом 12 09-06-2012 23:25
[решено] Сбор офисного ПК ramazanov94@vk Выбор отдельных компонентов компьютера и конфигурации в целом 10 02-04-2012 20:29




 
Переход