Команда Copy-ltem является реализацией в PowerShell команды copy bp DOS и команды ср из UNIX. Но помимо этого, Copy-ltem сконструирован для работы с данными, выдаваемыми любым провайдером. Первыми двумя параметрами команды являются – Path (вы используете его для указания элемента, который хотите скопировать) и – Destination (вы применяете его для указания места, в которое хотите скопировать этот элемент). Они позиционные, поэтому имена параметров можно опустить. Например, следующая команда копирует файл test. txt из папки C:Scripts в папку C:BackupsScripts:


Copy-ltem C:Scriptstest. txt C:BackupsScripts

Параметр – Path принимает групповые символы, поэтому вы можете копировать несколько файлов сразу. Например, следующая команда копирует все файлы в папке C:Scripts в папку C:BackupsScripts:

Copy-ltem C:Scripts* C:BackupsScripts

Чтобы получить более детальное управление операцией копирования, вы можете задействовать параметры – Recurse, – Filter и – Force. Так, следующая команда копирует все файлы .txt, содержащиеся в C:Scripts в C:TempText:

Copy-ltem -Path C:Scripts – Filter

* txt – Recurse’

-Destination C:TempText Обратите внимание, что «обратная кавычка» в конце первой строки является символом продолжения строки в PowerShell.

Немного освоившись, вы можете вставить свойство FullNamc в параметр – Path для копирования тщательно отобранного списка файловых объектов, используя либо Get-ltem, либо команду Get-Childltem: Get-Childltem С:* – include * txt I Where-Object {$_.PSIsContainer – eq $false – and’

$_.LastAccessTime -gt ($ (Get-Date).AddMonths (-1))) I ForEach-Object {Copy-ltem $_.FullName C:Temp}

На самом деле это предложение является комбинацией трех отдельных команд. Первая команда (то есть команда в первой строке) возвращает все файлы. txt в корневом каталоге С. Вторая команда (команда во второй и третьей строках) вычленяет список текстовых файлов таким образом, что содержит только те файловые объекты, чье свойство LastAccessTime больше, чем месяц назад. Третья команда (команда в последней строке) вставляет каждое файловое имя в свойство – Path, располагающееся в Copy-ltem, используя команду ForEach-Object. Слишком сложно для вас? Тогда можете принять входные данные по конвейеру. Только убедитесь, что вы указали имя параметра – Destination так, чтобы Copy-ltem знала, что делать с этими входными данными, так как данный параметр находится не в ожидаемой позиции: Get-Childltem С:* – Include * log I Copy-ltem – Destination C:Temp Хотя в наших примерах это и не показано, вы можете обратиться к Copy-ltem через дополнительные имена. Существует три псевдонима: сору, ср, cpi.

0 ответы

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

Добавить комментарий