PowerShell - сопоставить файлы в двух директориях

Ответить
Аватара пользователя
alyam83

PowerShell - сопоставить файлы в двух директориях

Сообщение alyam83 »

добрый день!

будьте добры, помогите, пожалуйста, написать скрипт:

есть 2 директории:

c:\program files\microsoft office\addins и \\server\addins

нужно сравнить файлы *.xla и *.xlam в директориях по дате создания. если совпадают, то истина, иначе - ложь
Аватара пользователя
alyam83

Re: PowerShell - сопоставить файлы в двух директориях

Сообщение alyam83 »

Код:

Код: Выделить всё

-not (diff (ls "c:\program files\microsoft office\addins\*" -inc *.xla, *.xlam -file) (ls "\\server\addins\*" -inc *.xla, *.xlam -file) -Property Name,CreationTime)
Аватара пользователя
alyam83

Re: PowerShell - сопоставить файлы в двух директориях

Сообщение alyam83 »

выдает ошибку, если файлы в директории отсутствуют



\\server\addins - это эталон.

если файлы отсутствуют или не совпадают я из эталонной папки должен их скопировать.
Аватара пользователя
alyam83

Re: PowerShell - сопоставить файлы в двух директориях

Сообщение alyam83 »

Код:

Код: Выделить всё

robocopy "\\server\addins" "c:\program files\microsoft office\addins" *.xla *.xlam /mir
Аватара пользователя
alyam83

Re: PowerShell - сопоставить файлы в двух директориях

Сообщение alyam83 »

да. еще /purge



но нужно проверить условие:

если файлы *.xla *.xlam не совпадают по дате с файлами из эталонной папки, или отсутствуют, то ложь.
Аватара пользователя
Iska

Re: PowerShell - сопоставить файлы в двух директориях

Сообщение Iska »

метод обнаружения в sccm, чтобы robocopy выполнить.

иначе команда robocopy будет выполняться постоянно



смысл такой: если метод обнаружения выдает ложь, то robocopy выполняется. если истина, то ничего не выполняется
Аватара пользователя
alyam83

Re: PowerShell - сопоставить файлы в двух директориях

Сообщение alyam83 »

Какая разница, будет дергаться скрипт или robocopy?





Код:

Код: Выделить всё

$local = ls "c:\program files\microsoft office\addins\*" -i *.xla, *.xlam -file -ea 0
$remote = ls "\\server\addins\*" -i *.xla, *.xlam -file -ea 0
if($local -and $remote) {
	-not (diff $local $remote -Property Name,CreationTime)
} else {
	$false
}
Ответить

Вернуться в «Скриптовые языки администрирования Windows»