Команда 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.