Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт для переноса файлов по заданным параметрам (http://forum.oszone.net/showthread.php?t=314298)

Kakazabr 26-04-2016 21:41 2629933

Скрипт для переноса файлов по заданным параметрам
 
Здравствуйте, появилась задача написать скрипт...



Помогите пожалуйста в решении задачки. Мое знакомство с PS состоялось не так давно, и знаний недостаточно...

greg zakharov 27-04-2016 09:28 2630011

Например (PowerShell v5):
Код:

param(
  [Parameter(Mandatory=$true, Position=0)]
  [ValidateScript({Test-Path $_})]
  [ValidateNotNullOrEmpty()]
  [String]$From,
 
  [Parameter(Mandatory=$true, Position=1)]
  [ValidateScript({Test-Path $_})]
  [ValidateNotNullOrEmpty()]
  [String]$To
)

begin {
  function private:Get-UniqueName {
    [GUID]::NewGuid() -replace '-', ''
  }
 
  function private:Find-Criteria([String]$Path) {
    (Get-ChildItem $Path -File -Recurse).Where{
      [Math]::Floor($_.Length / 1Kb) -gt 200 -and `
      ((Get-Date) - $_.CreationTime).Days -gt 60
    } | Select-Object -ExpandProperty FullName
  }
}
process {
  (Find-Criteria $From).ForEach{
    Copy-Item $_ "$To\$(Get-UniqueName)$(
    [IO.Path]::GetExtension($_)
    )" -Verbose 4>&1 | Tee-Object "$pwd\log.txt" -Append
  }
}


greg zakharov 27-04-2016 12:25 2630076

Код:

$dest = 'C:\MyPath'
ls -fi *.txt|?{((date)-$_.CreationTime).Days -gt 60 -and $_.Length -gt 10kb}|%{mi $_.FullName "$dest\$(date -U %Y-%m-%d)_$($_.Name)"}


Kakazabr 27-04-2016 15:49 2630143

Спасибо большое! Заработало.
Остался последний штрих... Производить логирование. Out-File не срабатывает. Где-то слышал, что у Move есть ключик на вывод...
Или может быть подскажите более простой способ записывать лог в файл?

greg zakharov 27-04-2016 16:29 2630155

Во-первых
Код:

PS C:\> man Out-File
Во-вторых
Код:

PS C:\> man Tee-Object
В-третьих
Код:

PS C:\> man about_Redirection
В-четвертых, какая версия PowerShell?

Kakazabr 27-04-2016 16:34 2630158

PowerShell 4 версии

greg zakharov 27-04-2016 16:39 2630161

Если четверка, то:
Код:

... | %{mi $_.FullName "$dest\$(date -U %Y-%m-%d)_$($_.Name)" -ve 4>&1|tee log.txt -ap}
По-хорошему же вообще следовало бы использовать методы-расширения, вместо альясов ? и %.

Iska 27-04-2016 21:04 2630227

Цитата:

Цитата greg zakharov
По-хорошему же вообще следовало бы использовать »

…и не следовало править задним числом свои сообщения. Kakazabr, зачем убрали задание?


Время: 02:17.

Время: 02:17.
© OSzone.net 2001-