Синхронная передача файлов между компьютерами с помощью BITS
Командлет Start-BitsTransfer позволяет загружать файлы через протоколы HTTP (например, командлет Invoke-WebRequest) и из общих сетевых ресурсов (через SMB). Чтобы загрузить файл с указанного URL-адреса по протоколу BITS и сохранить его в локальном каталоге C: \ Temp, используйте команду:
Сообщение Это передача файла с использованием фоновой интеллектуальной службы передачи (BITS) указывает, что загрузка указанного файла началась с использованием протокола BITS.
В этом примере командлет загружает файл синхронно. Загрузка файла аналогична обычной процедуре копирования с использованием проводника или командлета PowerShell Copy-Item. В этом случае на экране появляется индикатор выполнения, показывающий статус загрузки. Когда ваш компьютер перезагрузится, загрузка не возобновится (вам нужно снова загрузить весь файл).
Bat файл — что к чему, вводная
Для начала немного о том, что такое bat файл , зачем он нужен и с чем его (или их) едят. Дабы не изобретать велосипед воспользуюсь выдержкой из Википедии:
Пакетный файл (т.е bat файл, от англ. batch file ) — текстовый файл в MS-DOS, OS/2 или Windows , содержащий последовательность команд, предназначенных для исполнения командным интерпретатором.
После запуска пакетного файла, программа — интерпретатор (как правило COMMAND.COM или CMD.EXE ) читает его строка за строкой и последовательно исполняет команды.
Пакетный файл — аналог shell script в Unix -подобных операционных системах.
Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, что регулярно приходится совершать пользователю компьютера.
Примерами таких операций могут служить — обработка текстовых файлов; копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.
Пакетные файлы поддерживают операторы if и goto (а в системах семейства Windows NT и расширенный оператор for ), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).
Пакетные файлы в DOS имеют расширение . bat ; для других операционных систем они могут иметь другие расширения — например, . CMD в Windows NT и OS/2 , или .BTM в 4DOS или подобных оболочках.
С теорией разобрались, приступим к, собственно, практике, а именно созданию bat-ника.
Копирование файлов по сети
пробовал так, работает когда заходиш по рдп
Но минус в чем, на машинах есть 2 разных профиля admin и t-admin, я работаю с профиля admin и на машинах, где такой же рабочий профиль, то копирует на рабочий стол норм или если заходить по РДП и запускать БАТ такого собержания, то тоже копирует, а вот на машины с активных профилем t-admin, не хочет
Хочу организовать батник с лог файлом, чтоб копировать когда надо файлы по сети в папку Share(расшарена) или без разшаривания, просто на рабочий стол «%USERPROFILE%\Desktop\
3. Чтоб проверяло онлайн компьютер или нет, чтоб не тупило при копировании
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Копирование файлов из сетиВсем Доброго дня. сначала опишу суть, потом вопросы. Есть сетка, с некоторым количеством.
Копирование файлов по сетиДоброго дня! Стоит следующая задача: С нескольких ПК в сети, нужно скопировать файлы на один. Для.
Копирование файлов по сети на несколько ПК
Копирование файлов по сети на компьютеры, указанные в файлеЕсть такой батник. Но как сделать чтоб он копировал файл по сети на компьютеры указанные в файле.
Copy examples
The easiest way to copy a folder with all files and subfolders is to run this command:
robocopy c:\temp\source c:\temp\destination /E /DCOPY:DAT /R:10 /W:3
The /E switch tells Robocopy to copy all subfolders, including empty ones. If you don’t want to copy empty subfolders, use the /S switch. Note that I have specified /DCOPY:DAT (default is DA), as I usually want the folder timestamps to be the same as the source. I also limit the number of retries and wait times. If there is a file locked, it won’t usually be unlocked quickly, and it’s easier for me to check the erred files manually later rather than waiting ages for the whole command to complete.
If you are about to copy a large number of files, it might be more useful to save the output to a log file so you can review the results later, even if the command prompt is closed.
robocopy c:\temp\source c:\temp\destination /E /DCOPY:DAT /R:100 /W:3 /LOG:C:\temp\robocopylog.txt
Will give you a text log file with all the information you would normally see on screen.
Redirecting the output to a log file
Note: If the destination directory (c:\temp\destination) already exists, you will see one skipped folder in the results.
In many (if not most) cases, you will need to create a completely identical copy of the source, including the NTFS owner and auditing information. For that, I add /COPYALL to the command, which is equivalent to /COPY:DATSOU.
robocopy c:\temp\source c:\temp\destination /E /COPYALL /DCOPY:DAT /R:100 /W:3
Note that this command has to be run from an elevated command prompt, unless you have turned off UAC, otherwise you’ll receive this error message:
ERROR : You do not have the Manage Auditing right.
Error when using /COPYALL without elevation
Настройка операционной системы
Для начала необходимо настроить операционную систему, причем и на том компьютере, с которого будет осуществляться резервное копирование, и том, на который будут сохраняться резервные копии.
Необходимо отключить брандмауэр Windows. Заходим в меню «пуск» / «панель управления» / «брандмауэр Windows», слева открываем пункт «Включение и отключение брандмауэра Windows». В параметрах размещения домашней или рабочей сети и общественной сети выбираем пункт «Отключить брандмауэр Windows», и нажимаем «Ок». Если у вас установлен антивирус с сетевым экраном, тогда отключите его на время установки, настройки и тестирования программы. Так вам будет легче понять блокирует ли он соединение.
Теперь нужно настроить параметры общего доступа. Заходим в «пуск» \ «панель управления» \ «центр управления сетями и общем доступом» \ и слева нажимаем на вкладку «изменить дополнительные параметры общего доступа». Здесь необходимо настроить всё так, чтобы все пользователи могли заходить к каждому пользователю в общие папки (сетевые папки). На четырех снимках экрана ниже можно увидеть все необходимые настройки параметров общего доступа. Данные настройки нужно использовать для всех профилей, даже если не все они имеются на снимках экрана, но параметры и пункты во всех профилях одинаковые. Настройки потоковой передачи мультимедиа менять не нужно, остальное всё нужно сделать как на снимках экрана.
Также необходимо, чтобы пользователи находились в одной рабочей группе. Нажимаем правой кнопкой по моему компьютеру и выбираем пункт «свойства». Здесь можно посмотреть в какой рабочей группе состоит данный компьютер, и если нужно её изменить нажимаем «изменить параметры».
Нажимаем кнопку «изменить».
В следующем окне можно изменить рабочую группу. Если у вас и так все компьютеры в одной рабочей группе, тогда изменений вносить сюда не нужно.
Теперь необходимо открыть доступ по сети к папке, в которую необходимо сохранять резервные копии. Нажимаем правой кнопкой мыши по этой папке и выбираем пункт «свойства», а там переходим во вкладку «доступ».
Нажимаем кнопку «Расширенная настройка».
В открывшемся окне необходимо поставить галочку «Открыть общий доступ к этой папке», а также нажать на кнопку «Разрешения».
В окне «разрешения для группы» нужно поставить галочку «Полный доступ» в колонке «Разрешить». Нажимаем «Ок», в окне расширенной настройки общего доступа тоже нажимаем «Ок».
Теперь нужно перезагрузить компьютер.
Параметры
Параметр | Описание |
---|---|
источник | Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь. |
результат | Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию. |
/w | Выводит следующее сообщение с ожиданием подтверждения начала копирования: Нажмите любую клавишу, чтобы начать копирование файлов |
/p | Запрашивает подтверждение при создании каждого файла-результата. |
/c | Игнорирует ошибки. |
/v | Проверяет каждый скопированный файл на соответствие его оригиналу. |
/q | Отменяет вывод на экран сообщений команды xcopy. |
/f | Выводит имена исходных файлов и файлов-результатов в процессе копирования. |
/l | Отображает список копируемых файлов. |
/g | Создает незашифрованные файлы-результаты. |
/d | Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы. |
/u | Копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата. |
/i | Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом. |
/s | Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом. |
/e | Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t. /t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e. |
/k | Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут «только для чтения». |
/r | Копирует файлы с атрибутом «только для чтения». |
/h | Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы. |
/a | Копирует только те файлы, которые имеют установленный атрибут «архивный». При использовании параметра /a атрибут «архивный» у исходных файлов не меняется. |
/m | Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов. |
/n | Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS. |
/o | Копирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL). |
/x | Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL) (подразумевается наличие /p). /exclude:файл1]] Определяет список файлов, содержащих строки. |
/y | Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла. |
/-y | Выдает запрос на подтверждение перезаписи существующего конечного файла. |
/z | Копирует по сети в режиме перезапуска. |
/? | Отображает справку в командной строке. |
Добавляем в файл команду, например, для копирования
Далее, собственно, нам в этот файлик нужно ввести команду, которая будет воспроизводиться по средством консоли ( cmd ) при запуске этого файла. В данном случае мы воспользуемся командой xcopy ибо именно она позволяет копировать файлы, каталоги и подкаталоги. Учитывая все пути у нас получится следующая команда:
xcopy C: est estcopy C: estackup /f /i /y /s
Разъясняю что тут к чему:
- xcopy — это сама команда;
- C: est estcopy — это источник, т.е. папка откуда копируются файлы и каталоги;
- C: estackup — это результат, т.е. место, куда будут скопированы файлы и каталоги;
- /f /i /y /s — дополнительные параметры синтаксиса для команды xcopy (см.синтаксис ниже по тексту).
Количество строчек может быть любым, т.е. если Вам надо скопировать 100 папок, Вы пишете 100 строчек в одном файле и меняете в них только пути.
Далее, касательно синтаксиса (какие дополнительные параметры есть, какие можно дописать и зачем они нужны).
Какие есть (т.е. те, что я указал в данном примере):
- /f — выводит имена исходных файлов и файлов-результатов в процессе копирования
- /i — создает новый каталог в случае, если тот отсутствует в конечном пути
- /y — перезаписывает файл в случае, если он уже есть
- /s — копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
Как по мне — это основной список параметров необходимых для «тихого» копирования, т.е. без лишних вопросов о перезаписи, создания каталогов и прочей шушеры. Касательно остального синтаксиса можно почитать, например, тут.
Далее нам надо сменить формат файла с txt на bat . Делается это следующим образом.
Пример скрипта
Скрипт будет сравнивать файлы в рабочем каталоге и папке резервного копирования с помощью rsync. Это позволит нам сэкономить на времени выполнения задания. Долго будет выполняться только задание создания архива с помощью tar.
Создаем каталог для скриптов и сам скрипт:
mkdir /scripts
vi /scripts/samba_backup.sh
- #!/bin/bash
- PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
- source=»/data»
- destination_root=»/backup»
- fdate=$(date +%Y-%m-%d)
- # Clean old archives
- find ${destination_root}/archive -type f -name «*.tar.gz» -ctime +370 -exec rm -R {} \; 2>&1
- # Daily
- rsync -a —partial —inplace —append —delete-after ${source}/ ${destination_root}/daily/
- # Weekly
- if ]
- then
- rsync -a —partial —inplace —append —delete-after ${source}/ ${destination_root}/weekly/
- fi
- # Archive
- count_last_archives=$(find ${destination_root}/archive/ -name «*.tar.gz» -mtime -30 | wc -l)
- if ]
- then
- cd ${source}
- tar zcf ${destination_root}/archive/samba_${fdate}.tar.gz ./*
- fi
Задаем права скрипту на выполнение:
chmod +x /scripts/samba_backup.sh
Скрипт готов к работе.
Как скачать файл по протоколу BITS с помощью PowerShell
Предположим, вы хотите загрузить большой ISO-файл, хранящийся на HTTP-сервере IIS (_http://10.2.2.148/erd65_32.iso).
Предполагается, что к данному URL-адресу разрешен анонимный доступ (о доступе к URL-адресу с аутентификацией мы поговорим позже).
Сначала загрузите модуль поддержки BITS в сеанс PowerShell:
После загрузки модуля вы можете перечислить все доступные команды модуля BitsTransfer:
Как видите, доступно всего 8 командлетов:
- Добавить BitFile
- Полная битовая передача
- Get-BitTransfer
- Бит удаления-передачи
- Резюме-BitTransfer
- Установка битов передачи
- Начать битовую передачу
- Приостановить передачу битов
Настраиваем расписание в Mac OS и Linux
За запуск команд по расписанию в Mac OS и Linux отвечает команда crontab. У неё много параметров и возможностей, но сейчас нас интересует только одно — как с её помощью запускать нашу команду для бэкапа раз в 10 минут.
Для этого делаем так.
- В терминале пишем команду и нажимаем Enter.
- Появляется окно редактора, где нужно нажать сначала s, а потом вставить такую строчку:
- Нажимаем сначала Esc, а потом по очереди :wq (двоеточие, потом w, потом q) — это сохранит нашу команду и закроет редактор.
- Проверяем, что всё записалось командой — мы должны увидеть свою команду.
За запуск каждые 10 минут отвечает начало команды — . Остальные звёздочки отвечают за часы, дни, недели и месяцы, а косая черта — за постоянное повторение каждые сколько-то минут.
Теперь 6 раз в час наша команда будет запускаться и следить за актуальностью резервной копии. Если нужно несколько команд, то просто добавьте новые строчки и сохраните всё таким же образом.
Сохраняем и выходим из редактораУбеждаемся, что наша команда на месте и расписание действуетЧтобы всё работало без сбоев, в Системных настройках нужно выбрать раздел «Защита и безопасность» → «Доступ к диску». В нём нажать на плюсик, потом ⇧+⌘+G, вставить /usr/sbin/cron и нажать Enter. В списке появится cron, а это значит, что он может выполнять любые задачи с файлами в любой момент
Установка и настройка Duplicati
Прочитать описание Duplicati, а также скачать её можно тут.
Запускаем установщик «Duplicati 1.3.4.msi» (Прямая ссылка, версия 1.3.4). Нажимаем кнопку «Next». Установщик на английском языке, но сама программа будет на русском языке.
В данном окне показано лицензионное соглашение на данный программный продукт. Ставим галочку «I accept the terms in the License Agreement» и нажимаем кнопку «Next».
В следующем окне отображены компоненты установки, ничего менять не нужно, просто нажимаем «Next».
Далее нажимаем кнопку «Install».
Далее идёт процесс установки программы. По окончанию установки нажимаем «Finish». Галочка «Launch Duplicati now» означает запуск программы после нажатия кнопки «Finish».
При первом запуске Duplicati будет запущен мастер настройки. Выбираем пункт «Настроить новое копирование» и нажимаем кнопку «Далее».
В следующем окне нужно указать «Название задания». Стоит написать как можно более понятно о копирование каких папок может идти речь. Вводим название и нажимаем кнопку «Далее».
В следующем окне мастера настройки необходимо указать папки, которые необходимо копировать. По умолчанию предлагает копировать мои документы. Нам нужно указать свой список файлом, поэтому выбираем пункт «Создать свой список папок». Указываем папки, для которых необходимо регулярно создавать резервные копии при помощи кнопки с многоточием. После того, как были указаны все папки, нажимаем кнопку «Далее».
В следующем окне предлагается защитить резервные копии при помощи пароля, а также зашифровать при помощи AES-256. Данное решение остается принять Вам. Если нужен защитить, вводим пароль и нажимаем «Далее». Если не нужно защищать резервные копии паролем, тогда убираем галочку «Защитить копии паролем». Может потребоваться повторно ввести пароль для того, чтобы исключить опечатки.
Далее необходимо указать тип места, где необходимо будет хранить резервные копии. Для сохранения копий в локальную сеть нужно выбрать пункт «Копирование в файл», нажимаем «Далее».
Теперь в поле «Путь» указываем место для сохранения резервных копий при помощи кнопки с многоточием. Нажимаем «Далее».
В следующем окне нужно поставить галочки напротив пунктов «Укажите, когда и как часто запускать задание» и «Укажите, когда удалять старые копии». Нажимаем «Далее».
Указываем как часто необходимо запускать задание по резервному копированию. Время запуска стоит настроить по своему усмотрению, а вот «Выбор полного / инкрементального копирования» стоит оставить по умолчанию.
Далее необходимо указать условия удаления старых копий. Необходимо учесть размер копируемых данных и размер свободного места на жестком диске компьютера, на который будут они копироваться. В соответствии с этим, необходимо настроить два пункта в данном окне «Хранить полных копий, штук, не более» и «не хранить копии, старее чем». Рекомендуется хранить полных копий не более 1. Нажимаем «Далее».
Задание настроено, нажимаем «Завершить».
Как создать bat файл и использовать его
Давайте подготовим небольшое тестовое поле, чтобы было на базе чего экспериментировать. Откройте мой компьютер и создайте на диске C: папочку test . Зайдите в неё и создайте в ней папку testcopy .
Накидайте туда файлов (штук 5-10 ) — фотки, документы и тд и тп (любых короче). Поле для экспериментов готово. Далее нам надо создать, собственно, сам bat файл по нажатию на который у нас будет происходить копирование папки C: est estcopy в, скажем, папку C: estackup . Создавать вторую папку (которая backup ) не надо — она будет появляться автоматически.
Создать bat очень просто
Жмем правой кнопкой мышки там где хотим его создать (расположение не важно — можно прямо на рабочем столе) и выбираем » Создать » — » Текстовый документ »
Задаем созданному файлу название и открываем его блокнотом или любым другим текстовым редактором. Т.е. на данный момент мы имеем открытый текстовый файлик, который называется, допустим, копирование.txt .
Как передавать файлы через локальную сеть: обмен и отправка документов, фотографий, видео
Всем привет! Сегодня в статье мы будем разбирать вопрос – как передать файлы по локальной сети. На самом деле ничего сложного нет, но надо правильно настроить политику безопасности на двух компьютерах или ноутбуках. В первую очередь нужно, чтобы два устройства, то бишь компьютера – были в одной локальной сетки. Для этого их можно подключить к одному маршрутизатору или роутеру.
Сделать это можно двумя способами:
- По кабелю – если на роутере достаточно LAN портов, то просто с помощью сетевого кабеля подключаем два аппарата;
- По Wi-Fi – просто подключаемся к беспроводной сети.
Далее нужно выполнить некоторые действия, который помогут связаться двум компьютерам. Если у вас что-то будет не получаться или будут какие-то проблемы – пишите в комментарии.
BITS: требования к ОС и версии PowerShell
Протокол BITS был впервые представлен в Windows XP, где утилита bitsadmin.exe может использоваться для управления процессами BITS. Утилита все еще поддерживается, но устарела. Лучше всего использовать специальные командлеты PowerShell для управления процессами BITS.
Для работы по этому сценарию нам потребуется операционная система не ниже Windows Vista или Windows Server 2008 и PowerShell версии не ниже 2.0. Современные версии Windows 10 и Windows Server 2016/2012 R2 полностью поддерживают протокол BITS.
Совет. Вы можете использовать Windows Server 2003. В этом случае вам потребуется установить специальные обновления KB 923845 и PowerShell V2.0.
Поддержка BITS требуется как на стороне клиента, так и на стороне сервера.
Создание файлов
В следующем примере мы создадим файл с расширением ‘.txt’:
По умолчанию файл создается в той директории откуда был запущен сам Powershell. Изменить путь создания файла можно указав путь в Path:
Каждая папка так же является файлом, но для ее создания в Powershell нужно указывать тип ‘Directory’ в ‘ItemType’:
Создание со вложенными директориями
Мы можем создать множество папок не указывая дополнительных параметров:
Если мы захотим создать директорию и файл, то получим ошибку:
New-Item : Could not find a part of the path
Исправить эту ошибку можно указав параметр Force, который создаст весь путь целиком:
Перезапись
Ключ Force не только создает родительские объекты в виде папок, но и перезаписывает файлы. Если не указан параметр Force, а файл или папка уже существует — вы получите ошибки:
- New-Item : The file ‘C:\Dir1\Dir2\Dir3\file.txt’ already exists.
- New-Item : An item with the specified name C:\Dir1\Dir2\Dir3\ already exists.
Указывая Force — файлы перезаписываются удаляя все содержимое. В случае с папками ничего удалено не будет.
Запись данных
Еще один из способа перезаписи файлов в Powershell — использование символа перенаправления вывода ‘>’. Если объект уже существует — он будет перезаписан, иначе будет создан новый файл:
Почти такой же результат будет если добавить в команду параметр Value. Результат следующего примера будет аналогичен предыдущему:
Мягкие и жесткие ссылки
Кроме файлов и директорий в ItemType можно указать следующие типы ссылок:
- SymbolicLink (мягкая ссылка) — обычный ярлык на папку или директорию;
- Junction — старый тип ссылок (до Windows Vista);
- HardLink (жесткая ссылка) — ссылка на объект в файловой системе. Не работает с директориями.
Каждый файл можно представить как ссылку на объект файловой системы. Ярлык устанавливает связь с именем файла (ссылка на ссылку). При переименовании оригинального файла или его удалении ярлык перестает работать.
Жесткая ссылка работает иначе. Она ссылается на объект файловой системы, а не на имя. Поэтому при удалении или переименовании оригинального файла эта связь не потеряется. Такие ссылки можно представить как копии оригинальных фалов, но которые не занимают дополнительное место на диске. Жесткие ссылки работают в рамках одного раздела и их нельзя использовать на каталогах. Сам объект файловой системы (файл) будет существовать до последней такой ссылки.
В следующем примере я создаю жесткую ссылку, где ‘old_file.txt’ — имя существующего файла, а ‘new_link.txt’ — имя нового:
Создание множества файлов и директорий
Параметр Path может принимать несколько значений. Это значит, что одной командой мы можем создать несколько объектов:
Можно использовать сочетания директорий и файлов, добавляя ключ Force тем самым избегая ошибок.
Вам так же будет интересно:
Настройка текущего расположения (Set-Location)
Команда Get-Location используется с командой Set-Location. Команда Set-Location позволяет вам указать расположение текущего каталога.
Set-Location -Path C:\Windows
Обратите внимание, что после ввода команды вы не получите прямого отклика о действии команды. Большинство команд Windows PowerShell, выполняющих действия, практически не создают выходных данных, так как выходные данные не всегда полезны. Чтобы проверить успешность внесения изменения в каталог при вводе команды Set-Location, укажите параметр -PassThru при вводе команды Set-Location
PS> Set-Location -Path C:\Windows -PassThru Path ---- C:\WINDOWS
Параметр -PassThru можно использовать с некоторыми командами Set в Windows PowerShell для возврата сведений о результате, когда отсутствуют выходные данные по умолчанию.
Вы можете указать пути относительно текущего расположения так же, как и в большинстве командных оболочек UNIX и Windows. В стандартной нотации для относительных путей точка ( . ) представляет текущую папку, а две точки ( .. ) — родительский каталог текущего расположения.
Например, если вы находитесь в папке C:\Windows, точка ( . ) представляет C:\Windows, а две точки ( .. ) представляют C: . Текущее расположение можно изменить на корень диска C: путем ввода следующей команды:
PS> Set-Location -Path .. -PassThru Path ---- C:\
Тот же метод работает для дисков Windows PowerShell, которые не являются дисками файловой системы, например HKLM: . В реестре в качестве расположения можно задать раздел HKLM\Software путем ввода следующего кода:
PS> Set-Location -Path HKLM:\SOFTWARE -PassThru Path ---- HKLM:\SOFTWARE
После этого можно изменить расположение каталога на родительский каталог, который является корнем диска Windows PowerShell HKLM: с помощью относительного пути:
PS> Set-Location -Path .. -PassThru Path ---- HKLM:\
Вы можете ввести Set-Location или использовать любой из встроенных псевдонимов Windows PowerShell для Set-Location (cd, chdir, sl). Пример:
cd -Path C:\Windows
chdir -Path .. -PassThru
sl -Path HKLM:\SOFTWARE -PassThru
Работа с файлами и папками. Получение списка файлов и папок, содержащихся в папке.
Извлечь все элементы непосредственно из папки можно с помощью командлета . Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):
Get-ChildItem -Path C:\ -Force
Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда оболочки или команда оболочки UNIX. Для показа вложенных элементов необходимо также указать параметр . (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:
Get-ChildItem -Path C:\ -Force -Recurse
Командлет позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Сложную фильтрацию на основе других свойств элементов можно выполнить с помощью .
Следующая команда находит все исполняемые файлы в папке Program Files, которые были в последний раз изменены после 1 октября 2005 г. и размер которых не менее одного мегабайта и не более десяти мегабайт:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript {($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)}
Скрипт копирования файлов и папок по сети
- Для того чтобы скопировать всё содержимое папки используется следующий скрипт:
WScript.Quit(0) Const OverWriteFiles = True # три нижние строки определяют параметры копирование всех файлов в из папки Set objFSO = CreateObject(«Scripting.FileSystemObject») objFSO.CopyFolder «\\1-4ffc2e2aa3494\1\Рабочий стол\Test» , » C:\Documents and Settings\Администратор\Рабочий стол\Test \» , OverWriteFiles
Как видите, скрипт наилегчайший. Вам останется только создать текстовый документ, скопировать код и изменить его адреса в соответствии с вашей сетью (а именно те строки, где находятся адреса откуда и куда нужно скопировать файлы). После этого требуется сохранить скрипт с английской раскладкой и разрешением «.vbs».
Если копируемые файла требуется обновлять постоянно, можно полностью автоматизировать данный процесс, создав в «Планировщике задач» сценарий и выставить в параметрах временные интервалы.
Данные скрипты являются одними из самых элементарных. Можно воспользоваться «Командной строкой» и командной «xcopy /?».
После запуска команды вы можете выбрать те параметры, которые вам необходимы, и после этого создать собственный скрипт.
Чтение текстового файла в массив
Одним из наиболее общих форматов хранения текстовых данных является файл, отдельные строки которого рассматриваются как отдельные элементы. Командлет используется для чтения всего файла за один шаг, как показано далее:
PS> Get-Content -Path C:\boot.ini timeout=5 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=AlwaysOff /fastdetect multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=" Microsoft Windows XP Professional with Data Execution Prevention" /noexecute=optin /fastdetect
Командлет сразу рассматривает данные, считанные из файла, как массив с одним элементом на строку содержимого файла. Убедиться в этом можно, проверив свойство Length полученного содержимого:
PS> (Get-Content -Path C:\boot.ini).Length 6
Эта команда наиболее полезна для непосредственного ввода в Windows PowerShell информационных списков. Например, можно хранить в файле список имен компьютеров или IP-адресов по одному имени на каждую строку файла. Вы можете использовать командлет , чтобы извлечь содержимое файла и поместить его в переменную :
$Computers = Get-Content -Path C:\temp\DomainMembers.txt
Теперь переменная представляет собой массив, содержащий в каждом элементе имя компьютера.