Что нового

[Автоматизация] WMIC Сбор в сети данных об установленном ПО

Ctrl_Click

Новичок
Сообщения
4
Репутация
0
Приветствую всех! Очень нужна помощь т.к. своих знаний не хватает, а начальству пофиг. :smile:

Версия AutoIt: 3.3.12.0

Описание:
Сбор в сети данных об установленном ПО.

1. Скрипт проверяет наличие файла в таргет локации в сети. Если файл есть, скрипт прекращает работу. Если нет, то продолжает выполнение.
2. WMIC формирует txt (к примеру /output:\D:\AI.txt product get name).
3. Ждем формирования файла.
4. Переименовываем файл в @ComputerName.txt
5. Кладем в сетевую папку. (в ней и идет проверка из пункта 1)
6. Завершаем.

Примечания:
Если с остальными пунктами я могу более-менее справиться сам, то п.2 вызывает у меня затруднение. Буду благодарен за любой совет или помощь.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322

ildar

Осваивающий
Сообщения
252
Репутация
29
Я это делал путем чтения из реестра компьютеров домена.
Код:
Func _ReestrWinx64($sComp)
	$j64 = 0
	Dim $aArray[201]
	For $i64 = 1 To 200
		$var = RegEnumKey('\\' & $sComp & '\HKLM64\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\', $i64)
		$sName = RegRead('\\' & $sComp & '\HKLM64\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\'&$var&'\','DisplayName')
		If $sName <> '' Then
			If StringInStr($sName, 'Update') Then
				Else
					$aArray[$j64] = $sName
					ProgressSet( $scale, $sComp & '-' & $sName)
					$j64 += 1
				EndIf
		Else
		EndIf
	Next
	ReDim $aArray[$j64]
	_ArraySort($aArray)
	Return($aArray)
EndFunc

Func _ReestrWinx86($sComp)
	$j86 = 0
	Dim $aArray[201]
	For $i86 = 1 To 200
		$var = RegEnumKey('\\' & $sComp & '\HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\', $i86)
		$sName = RegRead('\\' & $sComp & '\HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\'&$var&'\','DisplayName')
		If $sName <> '' Then
			If StringInStr($sName, 'Обновление') Or StringInStr($sName, 'Исправление') Or StringInStr($sName, 'Hotfix') Then
				Else
					$aArray[$j86] = $sName
					ProgressSet( $scale, $sComp & '-' & $sName)
					$j86 += 1
				EndIf
		Else
		EndIf
	Next
	ReDim $aArray[$j86]
	_ArraySort($aArray)
	Return($aArray)
EndFunc
 
Автор
C

Ctrl_Click

Новичок
Сообщения
4
Репутация
0
madmasles сказал(а):
OffTopic:
Ctrl_Click [?]
Нет еще такой версии, не вышла. Будете ее ждать или как? :smile:

Прошу прощения. 3.3.12.0


Добавлено:
Сообщение автоматически объединено:

ildar сказал(а):
Я это делал путем чтения из реестра компьютеров домена.

Тут дело именно в итоговом файле. (/output:D:\IA.txt product get name,version,installdate)
 

ildar

Осваивающий
Сообщения
252
Репутация
29
Ctrl_Click
Если с остальными пунктами я могу более-менее справиться сам, то п.2 вызывает у меня затруднение.
2. WMIC формирует txt (к примеру /output:\D:\AI.txt product get name).
Какие затруднения?
 
Автор
C

Ctrl_Click

Новичок
Сообщения
4
Репутация
0
ildar сказал(а):
Ctrl_Click
Если с остальными пунктами я могу более-менее справиться сам, то п.2 вызывает у меня затруднение.
2. WMIC формирует txt (к примеру /output:\D:\AI.txt product get name).
Какие затруднения?

В последовательности букв и символов, которые позволят выполнить данную задачу. =) т.к. тут надо из cmd переходить в wmic, и уже там писать. В этом у меня и проблема.
 

ildar

Осваивающий
Сообщения
252
Репутация
29
Код:
RunWait(@ComSpec & ' /c ' & 'wmic product list >D:\AI.txt', "", @SW_HIDE)
 
Верх