PowerShell - [решено] Копирование файлов за определенную дату

Ответить
Аватара пользователя
tarasov.evgeny

PowerShell - [решено] Копирование файлов за определенную дату

Сообщение tarasov.evgeny »

Добрый день,



Необходимо скопировать файлы из папки в папку созданные в определенный день

При помощи команды Get-ChildItem | Get-Member нашел свойство в котором можно найти дату создания файла, также нашел, как из даты выдрать только день

(Get-ChilItem - path "c:\folder\file.txt").CreationTime.Day

На выходе получаем день создания - 21, 22, и т.д.

Не могу отфильтровать файлы в папке с только таким значением - например 22, т.е. за 22 число файлы скопировать.



Никак шарик за ролик не завернется, Изображение
Аватара пользователя
tarasov.evgeny

Re: PowerShell - [решено] Копирование файлов за определенную дату

Сообщение tarasov.evgeny »

Ура, шарик за ролик закатился....

Get-ChildItem | Where-Object {$_.CreationTime.Day -like "23"}
Аватара пользователя
tarasov.evgeny

Re: PowerShell - [решено] Копирование файлов за определенную дату

Сообщение tarasov.evgeny »

Наваял вот такой скрипт, можно ли его оптимизировать по скорости работы.

Скажем я пытался в команде Get-ChilItem в -Filter запихнуть два значения: *.log, *.ini. Но два он не обрабатывает или я не правильно, что-то написал. Пришлось запихнуть данные в -include ( он субъективно, медленнее работает)

Можно ли не создавать переменную $MM? Там текущий месяц. Если просто подоставить в:



Код:

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

-and $_.CreationTime.Month -like "(get-date).Month"}

то скрипт ничего не обрабатывает, как-будто в этом месяце не было записей...

Сам скрипт:



Код:

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

$AddDirectory = Read-Host "Please write name Directory"
New-item "$AddDirectory" -ItemType Directory
Write-Host "$addDirectory was create in current directory"
$MM = (get-date).Month
$AddDay = Read-Host "Please write day then log file was create"
$AddPCName = Read-Host "Please write PC name."
$ArrayPC = $addPCName -split "[,]"
foreach ($1 in $ArrayPC) {
 IF (Test-connection -Quiet -Delay 1 -Count 2 -ErrorAction SilentlyContinue  -ComputerName $1)
 {
 $file = Get-ChildItem \\$1\C$\folder\* -Include *.log, *.ini | '
Where-Object {$_.CreationTime.Day -like "$AddDay" '
-and $_.CreationTime.Month -like "$MM"}
 New-item -Path $AddDirectory -Name $1 -ItemType Directory
 Copy-Item $file -Destination $AddDirectory\$1
 "Компьютер $1 включен. Файлы скопированы." }
 Else {"Компьютер $1 выключен.Создана запись в файл ShutDownPC."
 Add-Content -Path "$AddDirectory\ShutDownPC.txt" -Value "Компьютер $1 выключен"
 }}
Ответить

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