В этой статье описывается выполнение конкретных задач по управлению файлами и папками с помощью PowerShell.
Решаем задачи Абрамян на C. Matrix78
05.04.2017Проверка знаний
Matrix78. Дана матрица размера $$M times N$$. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.
Читать далее
Источник: http://coolcode.ru/powershell-rabota-s-faylami-import-i-eksport-obektov-v-tekstovyie-faylyi/
10 ответов
может быть Start-Transcript будет работать для вас. Сначала остановите его, если он уже запущен, затем запустите его и остановите, когда закончите.
$ErrorActionPreference=»SilentlyContinue»Stop-Transcript | out-null$ErrorActionPreference = «Continue»Start-Transcript -path C:output.txt -append# do some stuffStop-Transcript
вы также можете запустить это во время работы над материалом и сохранить сеансы командной строки для последующего использования.
редактировать: если вы хотите полностью подавить ошибку при попытке остановить транскрипт, который не транскрибирует, вы можете сделать это:
$ErrorActionPreference=»SilentlyContinue»Stop-Transcript | out-null$ErrorActionPreference = «Continue» # or «Stop»
компания Microsoft объявлено на веб-сайте соединений Powershell (15.02.2012 в 16:40) что в версии 3.0 они продлили перенаправление как решение этой проблемы.
In PS 3.0, we’ve extended output redirection to include the following streams: Pipeline (1) Error (2) Warning (3) Verbose (4) Debug (5) All (*)We still use the same operators > Redirect to a file and replace contents >> Redirect to a file and append to existing content >&1 Merge with pipeline output
см. «В разделе about_redirection» статьи справки для деталей и примеров.
help about_Redirection
написать «материал для записи» | Out-файл Outputfile.txt-Append
одно возможное решение, если ваша ситуация позволяет:
- Переименовать MyScript.ps1 для TheRealMyScript.ps1
-
создайте новый MyScript.ps1, который выглядит так:
.TheRealMyScript.пс1 > выход.txt
возможно, вы захотите взглянуть на командлет Tee-Object. Вы можете передать вывод в Tee, и он будет записывать в трубопровод, а также в файл
Я так понимаю, вы можете изменить MyScript.ps1. Затем попробуйте изменить его так:
$( here is your current script) *>&1 > output.txt
Я только что попробовал это с Powershell 3. Вы можете использовать все параметры перенаправления, как в ответе Натана Хартли.
если вы хотите прямое перенаправление всех выходных данных в файл, попробуйте использовать *>>:
# You’ll receive standard output for the first command, and an error from the second command.mkdir c:temp -force *>> c:my.log ;mkdir c:temp *>> c:my.log ;
поскольку это прямое перенаправление в файл, он не будет выводиться на консоль (часто полезно). Если вы хотите вывод консоли, объедините все выходные данные с *&>1, а затем трубы с Tee-Object:
mkdir c:temp -force *>&1 | Tee-Object -Append -FilePath c:my.log ;mkdir c:temp *>&1 | Tee-Object -Append -FilePath c:my.log ;# shorter aliased versionmkdir c:temp *>&1 | tee -Append c:my.log ;
Я считаю, что эти методы поддерживаются Powershell 3.0+, я тестирую Powershell 5.0.
Если вы хотите сделать это из командной строки, а не встроен в сам скрипт
чтобы встроить это в свой скрипт, вы можете сделать это так:
Write-Output $server.name | Out-File ‘(Your Path)Servers.txt’ -Append
это должно сделать трюк.
Источник: http://askdev.ru/q/kak-perenapravit-vyvod-powershell-v-fayl-vo-vremya-ego-vypolneniya-11518/
Получение списка файлов и папок, содержащихся в папке
Извлечь все элементы непосредственно из папки можно с помощью командлета Get-ChildItem. Для отображения скрытых и системных элементов добавьте необязательный параметр Force . Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):
Get-ChildItem -Path C: -Force
Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда DIR оболочки Cmd.exe или команда ls оболочки UNIX. Для показа вложенных элементов необходимо также указать параметр -Recurse. (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:
Get-ChildItem -Path C: -Force -Recurse
Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path , Filter , Include и Exclude , но обычно осуществляется лишь фильтрация по имени. Сложную фильтрацию на основе других свойств элементов можно выполнить с помощью Where-Object.
Следующая команда находит все исполняемые файлы в папке 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)}
Источник: http://docs.microsoft.com/ru-ru/powershell/scripting/samples/working-with-files-and-folders?view=powershell-7
Что такое конвейер в Powershell?
Из моей первой ознакомительной статьи Вы уже могли сформировать некоторое представление о конвейере в Powershell. И о том, что командлеты могут передавать результат выполнения следующим командам для последующей обработки.
В powershell все, с чем можно взаимодействовать – это объекты с набором свойств. И даже текстовый файл технически представляет из себя набор строковых объектов. А каждая строка функционирует как уникальный и независимый объект. Объекты можно передавать от одной команды к другой бесконечно, пока Вы не получите нужный результат.
Итак, все, что выполняется в powershell, выполняется по конвейеру. Он может состоять из одной или множества команд. И эти команды выполняются слева на право, а разделяются они символом “|”. Большинство командлетов на выходе не генерируют читабельный вывод (таблицы, списки и т.д.). Но генерируют список объектов с их свойствами. В связи с чем в powershell существуют команды, которые отвечают за формирование удобно читаемого вывода.
Источник: http://zen.yandex.ru/media/id/5fba4ca6dc9eea3ba9da9a48/osnovy-powershell-konveier-i-formatirovanie-vyvoda-5fd277f14907305983006dfd
Работа с переменными
В PowerShell для того чтобы создать переменную, задать ей значение или получить это значение обычно используют знак доллар $ (коротко и удобно), но для этих целей существуют специальные командлеты.
- Get-Variable – выводит список переменных и их значения (или одну указанную переменную);
- New-Variable – создает новую переменную;
- Set-Variable – задает значение переменной. Если переменная с указанным именем не существует, то она будет создана;
- Clear-Variable — удаляет значение переменной;
- Remove-Variable — удаляет переменную и ее значение.
Источник: http://bookflow.ru/komandlety-windows-powershell-shpargalka-po-osnovnym-komandam/
Работа с сетью в Windows PowerShell
Для администрирования сети в Windows PowerShell существуют такие командлеты как:
- Disable-NetAdapter – командлет отключает сетевой адаптер;
- Enable-NetAdapter – данный командлет включает сетевой адаптер;
- Rename-NetAdapter — переименовывает сетевой адаптер;
- Restart-NetAdapter — перезапускает сетевой адаптер;
- Get-NetIPAddress – выводит информацию о конфигурации IP-адреса;
- Set-NetIPAddress — изменяет конфигурацию IP-адреса;
- New-NetIPAddress — создает и настраивает IP-адрес;
- Remove-NetIPAddress — удаляет IP-адрес и его конфигурацию;
- Get-NetRoute — выводит таблицу маршрутизации IP;
- Set-NetRoute — изменяет таблицу маршрутизации IP;
- New-NetRoute — создает запись в таблице маршрутизации IP;
- Remove-NetRoute — удаляет одну или несколько записей (IP маршрутов) из таблицы маршрутизации IP;
- Get-NetIPv4Protocol — выводит информацию о конфигурации протокола IPv4;
- Get-NetIPv6Protocol — выводит информацию о конфигурации протокола IPv6;
- Get-NetIPInterface — выводит информацию о свойствах интерфейса IP;
- Get-NetTCPSetting — показывает информацию о настройках и конфигурации TCP;
- Test-Connection – командлет посылает ICMP пакеты к одному или нескольким компьютерам, т.е. «пингует» компьютеры.
Источник: http://bookflow.ru/komandlety-windows-powershell-shpargalka-po-osnovnym-komandam/
Работа с фоновыми заданиями
В Windows PowerShell есть возможность запускать задачи в фоновом режиме, для того чтобы, не дожидаясь окончания работы команды (для случаев, когда задача выполняется долго), продолжать работать в текущей сессии. Для работы с фоновыми заданиями в PowerShell есть следующие командлеты:
- Start-Job – запустить фоновую задачу;
- Stop-Job – остановить фоновую задачу
- Get-Job – посмотреть список фоновых задач;
- Receive-Job – посмотреть результат выполнения фоновой задачи;
- Remove-Job – удалить фоновую задачу;
- Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
Источник: http://bookflow.ru/komandlety-windows-powershell-shpargalka-po-osnovnym-komandam/