Вадим Стеркин
Некоторые бюджетные автомобильные FM-трансмиттеры со встроенным MP3-плеером умеют воспроизводить файлы только в порядке по дате создания/изменения. Если их скачать на диск, например, торрент-клиентом и перебросить на флэшку — всё нормально.
Но если сначала сохранить на какое-то сетевое хранилище под Linux, а потом опять же по сети с него записать на флэшку — всё перемешивается. Файл с названием 001 может оказаться 5-м по дате изменения, а с названием 009 — первым.
Вы, как опытный пользователь каталогов и библиотек, можете ли подсказать как в Windows 7 восстановить правильную сортировку, а именно: взять порядок нумерации файлов по имени, и по нему создать признак по дате?
Как изменить сервер времени на Windows 10
- Откройте Панель управления.
- Нажмите на Часы и регион.
- Нажмите на Дата и время.
- Перейдите на вкладку Время по Интернету.
- Нажмите кнопку Изменить параметры.
После выполнения этих шагов Windows 10 будет синхронизировать время через Интернет с выбранным вами сервером.
Другие заметки
Профили PowerShell
Уверен, пользователи, занимающие автоматизацией задач в Bash, знают о файлах .profile, .bashrc и .bash_profile. Знают о том, что это за файлы и как их использовать, чтобы сделать работу в командной строке удобнее. Однако часть пользователей PowerShell не подозревают, что их инструмент обладает схожими возможностями — поддержкой профилей.
Цвета 2021 года по версии Pantone
Традиционно в конце года компания Pantone объявила трендовый цвет на следующий год. В этот раз цвет не один, а два!
dimayakovlev.ru © 2021 — Личная территория внутри всемирной паутины
Сайт создан и поддерживается мною с целью сохранения и распространения в свободном доступе опубликованных на нём материалов. Авторство разработок, текстов и изображений, принадлежит мне, если иное не указано отдельно.
При копировании материалов с сайта, не забывайте о важности обратных ссылок.
Размещение обратной индексируемой ссылки показывает интерес к содержанию сайта, что мотивирует к работе над новыми материалами.
Поддерживайте точное время, используя программные инструменты
Из-за настройки синхронизации по умолчанию только один раз в неделю служба времени Windows не может поддерживать точное время. Ошибка находится в диапазоне от 1 до 2 секунд, и никаких гарантий не дано. Microsoft прямо заявляет, что они «не гарантируют и не поддерживают точность службы W32Time между узлами в сети. Служба W32Time не является полнофункциональным NTP-решением, которое отвечает потребностям приложения, чувствительным ко времени ».
Если вас не устраивает инструмент по умолчанию, предоставляемый Windows, и вы не можете быть обеспокоены параметрами панели управления, вам следует изучить параметры программного обеспечения.
Джеффри представил Атомную Синхронизацию Часов в своей статье Как сделать так, чтобы все ваши времена ПК совпадали с Атомной синхронизацией часов
, Он позволяет просматривать настройки времени и даты, изменять интервал синхронизации и восстанавливать службу времени Windows. Инструмент доступен для Windows NT4 через Windows 7.
AtomTime
Это отличная альтернатива Atomic Clock Sync, которая поставляется с опциями. Вы можете просто использовать настройки по умолчанию, чтобы проверить и настроить время вашего компьютера. Или вы можете открыть> Настройки и проверить глубину инструмента.
Давайте рассмотрим некоторые параметры на самых интересных вкладках настроек …
- Выполнение: установите интервал обновления и запустите инструмент при запуске.
- Дисплей: отображать фактическое, местное или время по Гринвичу и отображать дату в системном трее.
- Серверы времени: используйте серверы атомных часов по умолчанию или добавьте пользовательский сервер.
И последнее, но не менее важное, обратите внимание на инструмент, предоставляемый NIST Internet Time Service (NIST Software справа), который обеспечивает точность в миллисекундном диапазоне. К сожалению, мои тесты на Windows 7 не увенчались успехом.
Сообщите нам в комментариях, как вы синхронизируете время своего компьютера.
Ситуация следующая: в одноранговой локальной сети есть одна Windows машина которая ходит в нтернет и синхронизирует время, например с time.nist.gov.
Рабочие станции этой сети не ходят в Интернет, или им запрещено синхронизироваться, или вы не хотите дополнительный трафик по UDP 123 порту наружу, или есть проблемы синхронизации времени с популярных интернет ntp cерверов. C помощью этой статьи вы настроите синхронизацию времени в среде Windows и настроите NTP сервер на обычной Windows машине.
Начнем с ОС Windows XP Prof (Windows XP Home — то же самое).
Открываем реестр — Пуск -> выполнить -> regedit
идем в ветку:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig
присваеваем параметру AnnounceFlags значение 5. Тем самым мы обьявим наш будущий NTP сервер, достоверным и компьютеры при синхронизации с ним не будут ругаться.
Далее Пуск -> выполнить -> mmc и добавляем оснастку «Редактор обьекта групповой полтики». Обьектом группвой политики выступит Локальный компьютер.
Идем по разделам Конфигурация компьютера -> Администрантивные шаблоны -> Система -> Служба времени Windows -> Поставщики времени. Там находим «Включить Windows NTP-сервер» и в свойствах выбираем позицию «включить». В заключении проходим в Службы, ищем «Служба времени Windows» и перезапускаем этот сервис. Если он не включен, то включаем его и ставим тип запуска «Авто».
Кроме этого на раздающем сервере необходимо изменить интервал через который он сам будет ходить в инет за временем.
Открываем реестр — Пуск -> выполнить -> regedit
идем в ветку:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProviders
NtpClientSpecialPollInterval
По умолчанию интервал между обновлениями времени в Windows – 1 неделя (604800 сек). При низкой точности системных часов компьютера это слишком большой интервал. При такой настройке за 1 неделю часы Вашего компьютера могут получить погрешность величиной порядка минуты или даже нескольких минут. Рекомендую уменьшить интервал обновления до нескольких часов. Это изменение не увеличит ни трафика, ни нагрузки на NTP-сервер, при этом позволит поддерживать более высокую точность хода часов Вашего компьютера.
При значении флага UseAsFallbackOnly службе времени сообщается, что данный сервер будет использоваться как резервный и перед синхронизацией с ним будут выполнятся обращения к другим серверам списка.
После внесения необходимых настроек в можно перечитать конфигурацию сохраненную в реестре коммандой приведенной ниже, или перезагрузить компьютер.
w32tm /config /update
И при необходимости выполнить немедленную синхронизацию
w32tm /resync
На этом настройка сервера закончена.
На клиентских компьютерах следуем в «Панель управления», выбираем «дата и время» и в закладке «Время интернета» меняем строку сервер на IP (или имя) вашего локального сервера.
Вот и все.
Можно раскидать батник на рабочие станции :
w32tm /config /manualpeerlist:IP_адрес_сервера,0x1 /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync
И запускаем его на клиентских машинах с правами Администратора.
Для WINDOWS 2000
Теперь поясню, как установить синхронизацию основного компьютера времени, т. е. корневого PDC-эмулятора леса, с реальным временем. Для этого следует Пуск -> выполнить -> ввести команду:
net time /setsntp:
Параметр /setsntp команды Net Time показывает, что используется Simple Network Time Protocol (SNTP), стандартный протокол Internet. Internet Engineering Task Force (IETF) Request for Comments (RFC-2030), датированный октябрем 1996 г., определяет SNTP. Можно указать любой сервер времени SNTP в Internet для корневого PDC-эмулятора леса и заставить его синхронизировать свое время с временем этого сервера. Многие брандмауэры включают сервер времени, так что для конкретного контроллера — эмулятора PDC — нет нужды обращаться куда-либо из своей внутренней сети для синхронизации с SNTP-сервером. Но если брандмауэр требуется настраивать, то нужно иметь в виду, что SNTP использует 123-й порт UDP.
Остановит сервер времени Windows Time Service:
net stop w32time
Затем можно проверить время источника, для чего следует ввести:
w32tm -once
чтобы установить время от источника времени однократно (по умолчанию W32tm обновляет время периодически). Система выдает страницу запутанной информации; в случае успешного выполнения команды в одной из строк появится Recv`ed from server 48 Bytes. Далее необходимо набрать:
net start w32time
чтобы снова запустить службу времени.
После первоначальной синхронизации с сервером времени компьютер снова сверяет с ним свое время через 45 мин. Если выясняется, что разница между показаниями часов сервера времени и системных часов компьютера не превышает 2 с, интервал ожидания следующей сверки с сервером времени удваивается. Если через полтора часа разница во времени остается в пределах 2 с, компьютер продолжает удваивать интервал синхронизации и проверять точность времени и, наконец, останавливается на интервале приблизительно 8 ч.
Если неизвестно, с каким SNTP-сервером синхронизируется система, в командной строке следует ввести:
net time /querysntp
Пишите если у кого не получилось, я запустил на 20-30 машинах в локалке и забыл о проблемах с разным временем в отчетах, логах, видео архивах и прочее. Главное не забывать когда заводите в сети новую машину проделать с ней эту процедуру.
Операционные системы GNU/Linux (в том числе Mac OS X) считают, что время в BIOS указано в формате UTC (по Гринвичу). Соответственно, при загрузке Linux для преобразования UTC к локальному времени добавляет (отнимает) смещение текущего часового пояса, который выбрал пользователь. Проще говоря, чтобы получить локальное время для часового пояса Москвы UTC+3, Linux добавит 3 часа.
Windows же считает, что в время в BIOS хранится в формате localtime. Поэтому если вы указали новый часовой пояс или синхронизировали время с внешним источником, система соответственным образом меняет время в BIOS на локальное время.
Linux (Kubuntu 18.04 в моем случае) считает, что время в BIOS указано в формате UTC и дополнительно добавляет смещение часового пояса. Именно поэтому и сбивается время при переключении между Linux и Windows.
Циклы Powershell
Циклы необходимы для повторного выполнения одинаковых операций с использованием разных значений. Есть циклы обрабатывающие данные получаемые из конвейера (ForEach-Object) и работающие отдельно (ForEach). Рассмотрим все возможные циклы Powershell подробнее.
ForEach
Цикл ForEach служит для пошаговой переборки значений из коллекции элементов. Обычно при помощи цикла foreach перебирают элементы в массиве. ForEach является самым простым для понимания и чаще всего используемым циклом в Powershell. ForEach не работает с конвейером для этого есть ForEach-Object. Посмотрим на синтаксис ForEach.
Переменная $collection это массив определенный заранее. Переменная $item — это текущий элемент из $collection. По очереди перебираются все элементы из массива $collection. Далее в фигурных скобках обычно вызывают переменную $item обращаясь к текущему элементу коллекции. Перейдем к примерам. Рассмотрим простейший сценарий по удалению старых журналов сервера IIS.
В переменной $data я вычисляю текущую дату минус 10 дней. В $massiv указываю путь к логам C:script и фильтрую список файлов с датой последней записи позже 10 дней от текущей даты. Далее в цикле foreach удаляю каждый файл из переменной $massiv. Скрипт довольно простой но в тоже время полезный.
Рассмотрим пример попроще. Создадим переменную с массивом чисел и в цикле к каждому числу прибавим 10.
После прохода цикла foreach к каждому числу в массиве $test прибавится 10.
Циклы Powershell foreach являются самыми распространенными.
ForEach-Object
Цикл ForEach-Object выполняет операцию над каждым элементом в коллекции входных объектов. Входные объекты передаются командлету ForEach-Object по конвейеру или могут быть заданы с помощью параметра InputObject. Цикл ForEach-Object поддерживает блоки begin, process, и end используемые в функциях.
Существует три способа построения команд в ForEach-Object. Давайте их перечислим.
Блок сценария
Блок сценария (Script block) — для задания операции используется блок скриптов. С помощью переменной [H1toH2]
подставляется текущий объект. Блок сценария может содержать любой сценарий PowerShell. Рассмотрим пример с получением списка запущенных процессов.
Блоки сценария выполняются в области действия вызывающего объекта. Т.е. блоки имеют доступ к переменным в этой области и могут создавать новые переменные, которые сохраняются после завершения командлета.
Оператор выражения
Оператор выражения (Operation statement) — в данном случае вы можете использовать оператор сразу указывая значение свойства. Данный способ написания визуально более удобен и проще читается. Эта особенность впервые появилась в Windows PowerShell 3.0. Рассмотрим на примере все того же Get-Process
Как видно из примера в данном случае вывод абсолютно такой же как и в случае написания блока сценария.
Сегодня мне поступила задачка, по списку имен сотрудников (список в текстовом файле) вывести соответствующие почтовые адреса из Microsoft Exchange. Делается это одной строкой как раз с использованием ForeEach-Object.
На входе у меня список сотрудников в текстовом файле sotr.txt. Считанную информацию из файла передаю по конвейеру циклу ForeEach-Object. В цикле командлет Get-Mailbox поочередно для каждого сотрудника из файла считывает информацию и на выходе командлет ft (алиас Format-Table) выводит таблицу с данными: ФИО — EMAIL
Блок сценария (параллельный запуск)
Блок сценария (параллельный запуск) — это новая функция доступна с версии Windows Powershell 7.0 позволяет запускать блоки сценария параллельно. Используя параметр ThrottleLimit можно ограничить количество одновременно работающих скриптов. В данном случае как и раньше используется переменная
для подстановки текущего входного объекта. Используйте $using для передачи ссылок на переменные в запущенный скрипт.
В Microsoft Windows PowerShell 7 для каждой итерации цикла создается новое пространство выполнения, обеспечивающее максимальную изоляцию. В связи с этом нужно четко понимать что объем обрабатываемых данных не займет все ресурсы системы. Если объем данных по циклу большой используйте ThrottleLimit. Это позволит ограничить нагрузку на систему и сохранить работоспособность других сервисов. Благодаря параллельному запуску сценарий будет отрабатываться значительно быстрее.
Давайте посмотрим на тестовый скрипт с использованием параллельного запуска.
Я получаю список всех файлов и передаю их на вход ForEach-Object. Цикл параллельно (10 проходов за раз) проходит по каждому файлу и в случае превышения размера более 100 байт записывает его в файл. Это создает хорошую нагрузку на систему. Давайте посмотрим разницу в загруженных ресурсах.
Скрипт отработал 1 минуту и за это время при параллельной обработке памяти затрачено 1 ГБ против 118 Мб при последовательной. Это практически в 10 раз больше. Стоит ли скорость отработки затраченным ресурсам решать вам.
While
Цикл While — это языковая конструкция выполняющая команды в командном блоке, пока условие верно. While довольно прост в написании, давайте посмотрим на синтаксис.
Вначале While оценивает условие в круглых скобках, если оно верно (True) следует выполнение блока команд в фигурных скобках. После первого прохода снова происходит проверка условия и так бесконечно (если его не прервать операторами выхода). Цикл While завершает свою работу если условие становится не верным (False).
Возьмем простейший пример. Введем новую переменную $a и присвоим ей значение 1. Далее цикл while будет проверять значение $a и пока оно не будет равно 10 выполняется блок команд. В блоке к $a будет прибавляться 1 с каждым проходом цикла. В момент когда $a станет равно 10 цикл остановится.
Можно записать цикл и одной строкой, однако читать уже не так удобно
В данном случае я не задал переменную $a и изначально она пустая. Но с каждой итерацией цикла к ней прибавляется 1.
Еще один пример, пригодится в жизни. Напишем сценарий постоянно проверяющий запущен ли процесс. Если процесс запущен то ничего не делать, если не запущен то запустить.
В данном случае while проверяет $a=1, если да то выполнить набор команд. Но $a у меня всегда 1 поэтому цикл будет бесконечный. Это простой пример скрипта для контроля запущенного процесса.
Do работает с циклом While или Until для использования операторов в блоке скрипта в зависимости от условия. Разница между While и Do-While в том, что блок скрипта в цикле Do всегда выполняется как минимум один раз.
В цикле Do-While условие вычисляется после выполнения блока скрипта. Так же как в While блок скрипта повторяется до тех пор, пока условие оценивается как верное.
Цикл Do-Until выполняется минимум один раз перед вычислением условия. Однако блок скрипта запускается когда условие ложно. Когда условие станет верным цикл Do-Until завершит работу.
Данный скрипт проверяет запущен ли блокнот. Если не запущен выполняется условие в фигурных скобках после Do. Цикл выполняется до тех пор пока блокнот не запустят.
Continue и Break
Операторы Continue и Break работают со всеми типами циклов, кроме ForEach-Object. Они могут работать с метками. Метка — имя которое можно присвоить оператору. Формат задания меток :metka цикл(условие) <блок скрипта>.
Оператор Continue предоставляет возможность выхода из текущего блока управления. После выхода из блока цикл продолжит выполнение. В момент вызова Continue текущая итерация цикла завершается и цикл продолжится со следующей итерацией.
Рассмотрим на примере цикла While. Командлет Get-Process ищет запущенные процессы notepad. Если запущен один процесс notepad то сработает Continue и цикл продолжится со следующей итерацией. Когда запущено более 1 процесса notepad все процессы с данным именем будут закрыты.
Оператор Break позволяет выйти из текущего блока управления. Выполнение продолжается на следующем операторе после блока управления. Данный оператор очень удобен если необходимо выйти из постоянно повторяющегося цикла.
Рассмотрим пример с постоянно повторяющимся циклом, остановить который сможет только запуск процесса notepad
Операторы Continue и Break отлично дополняют циклы Powershell еще больше расширяя их возможности.
Цикл For — обычно используется для создания цикла, выполняющего команды в командном блоке пока указанное условие оценивается как верное ($True).
Рассмотрим простейший пример цикла for
В цикле я задаю переменной z значение 2. Блок команд в фигурных скобка выполняется по $z меньше или равно 20.
В данной статье я рассмотрел все циклы Powershell существующие на данный момент. Какие из них использовать в работе конечно же решать вам. До новых встреч
П.С.: задать вопросы, пообщаться, обсудить статью циклы Powershell можно у меня в VK.
[/H1toH2]