Скрипт для переноса файлов по заданным параметрам
Здравствуйте, появилась задача написать скрипт...
Помогите пожалуйста в решении задачки. Мое знакомство с 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)"}
|
Спасибо большое! Заработало.
Остался последний штрих... Производить логирование. 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?
|
greg zakharov |
27-04-2016 16:39 2630161 |
Если четверка, то:
Код:
... | %{mi $_.FullName "$dest\$(date -U %Y-%m-%d)_$($_.Name)" -ve 4>&1|tee log.txt -ap}
По-хорошему же вообще следовало бы использовать методы-расширения, вместо альясов ? и %.
|
Цитата:
Цитата greg zakharov
По-хорошему же вообще следовало бы использовать »
|
…и не следовало править задним числом свои сообщения. Kakazabr, зачем убрали задание?
|
Время: 02:17.
© OSzone.net 2001-