Свежие публикации

Здесь собраны все публикуемые пикабушниками посты без отбора. Самые интересные попадут в Горячее.

17 Января 2024
4

Как изучать английский язык?

Интернет пестрит советами, как выучить английский за три дня (месяца, года). 🙂 Выскажу и я своё экспертное мнение о работающих принципах, которые я испытала на себе и рекомендую своим ученикам:

1. Если у вас не горит прям завтра сдать TOEFL/ IELTS при нулевой подготовке, я предлагаю схему 15 минут в день (без пропусков и выходных). Это позволит не бросить обучение через неделю под предлогом "нет времени". Сделайте такие занятия своей привычкой и результаты вас порадуют.

2.Учим по 3 слова в день. Логика, как и в предыдущем пункте - учить больше можно, но если заучивать по списку в день, никакой мотивации надолго не хватит.

3.Чтобы слова остались у вас в памяти, мало их выучить, нужно их использовать. Не у всех есть носители английского языка под боком, людям и на родном-то языке иногда поговорить не с кем, так что заведите себе полезную привычку писать по полстраницы в день на любую интересную для вас тему (можно описать, как прошёл ваш день или свои мысли по поводу какого-то события). Используйте новые слова и не думайте об ошибках, просто пишите. (Кстати, ошибки при обучении - это хорошо, это ведёт к прогрессу!)

4.Книги и фильмы - то, что поможет вам "прикоснуться" к языковой среде.

Читайте для удовольствия, не нужно сидеть со словарём над книгой, переводя каждое слово. Важно понять общий смысл. Чем больше вы прочитаете, тем больше вы поймёте. (На первом курсе ин.яза я, наивная, выбрала для чтения Властелин колец. Первые страниц 50 я понимала только артикли! 🙈)

Фильмы смотрим с английскими субтитрами, чтобы слышать английскую речь, но при этом не материться, пытаясь разобрать какой-нибудь диалект типа кокни в Карты, деньги, два ствола. Можно начинать с любимых фильмов, если нужен вариант полегче.

Как изучать английский язык? Английский язык, Изучение языка, Совет, Telegram (ссылка)

Вот основные принципы, которых я придерживаюсь в обучении английскому языку на работе (я - учитель в школе) и в своём телеграм-канале https://t.me/enghelena - здесь можно бесплатно прокачать свой английский.

Всем спасибо за внимание!

Показать полностью 1

GFP: Армия России стала второй сильнейшей в мире

Возглавила список армия США с индексом боевой мощи 0,0699, индекс ВС РФ - 0,0702. Также в пятерку сильнейших вошли вооруженные силы Китая, Индии и Южной Кореи.

GFP: Армия России стала второй сильнейшей в мире Политика, Министерство обороны, Спецоперация, НАТО, Россия, Вооруженные силы, Рейтинг, Армия

При этом отмечалось, что НАТО не может противостоять России, поскольку западные страны за два года украинского конфликта так и не смогли выработать стратегию для этого.

Источник

Поймай волну: мобильный Интернет в Таиланде

Когда речь заходит о мобильном интернете в Таиланде, выбор стоит между двумя основными типами тарифов: пакетами с помесячной оплатой и предоплаченными.

🟣Помесячные пакеты

Идеально подходят для долгосрочного пребывания, предлагая обычно безлимитный интернет с разной скоростью на ваш выбор.

🟣Предоплаченные пакеты

Так называемые "prepaid" пакеты, позволяют вам гибко управлять расходами и не беспокоиться о ежемесячных счетах. Купили карту — пополнили счет — используете интернет. И так каждый раз. Отличный вариант для краткосрочных поездок.

⭕️ Где приобрести

➡️Официальные магазины операторов связи.

➡️Аэропорты – по прилету вы сможете найти стойки и магазины операторов, где продавцы готовы помочь с выбором тарифа и активацией сим-карты.

➡️Большие ритейлеры – Такие как Big C, Tesco Lotus и 7-Eleven часто предлагают предоплаченные пакеты сим-карт.

➡️Туристические районы и рынки: В местах с высокой концентрацией туристов легко найти ларьки и маленькие магазинчики, продающие сим-карты.

⚠️ Помните, что при покупке сим-карты вас попросят предъявить паспорт.

📞Активация сим-карты

Условия активации могут отличаться в зависимости от оператора. Обычно инструкция указана на самой упаковке.

Чаще всего, после установки симки в телефон, вам нужно будет позвонить или отправить sms на определенный номер, для её активации.

Помните, что вы всегда можете попросить помочь вам в активации того сотрудника, у кого вы покупаете сим-карту.

💲 Пополнение баланса

Если вы выбрали предоплаченный тариф, то после активации вам нужно пополнить баланс. Это можно сделать онлайн, через терминалы в магазинах, или купив карту пополнения в супермаркете или киоске.

Часто после активации сим-карты на ней уже есть некоторое количество бесплатных минут или интернет-трафика. Однако для выбора тарифного плана или пакета услуг вам может потребоваться отправить USSD-запрос или воспользоваться приложением оператора.

В следующем посте предлагаю более подробно поговорить о трех ведущих операторах - AIS, DTAC и TrueMove H.

https://t.me/thailand_vibe/318

Показать полностью
9

Книга по истории Советского Союза

Лежу в больнице, тик токи эти ваши надоели, на Пикабу одно нытье в последнее время, скучно.. Посоветуйте пожалуйста какую-нибудь хорошую книгу по истории СССР, желательно написанную не в духе учебника, а в обычном художественном исполнении. Желательно с описанием идеологии того времени и ключевыми датами. Надеюсь что хоть одна такая книга написана)
заранее благодарю!

29

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)>

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Вводная по примеру скрипта:

Вводишь номер объекта в скрипт, он ищет на нём ПК в Active Directory и выдаёт информацию по количеству свободного места на диске и размеру диска. Выделенная область не совсем понятна. Знак доллара, собака, вот это вот всё. Если есть возможность разжевать цикл для тупых) и как это склеивается с командлетом.

Пример присланного скрипта на разбор (@5ma5h)

if ($SearchBase -ne "0"){

$PCs = Get-ADComputer -Filter * -SearchBase $SearchBase | select Name

for ($i=0; $i -lt $PCs.Length; $i++){

try{

Get-WmiObject win32_volume -ComputerName $PCs[$i].Name -ErrorAction Stop |

where {$_.Name -eq 'C:\' } |

select @{n='ComputerName'; e={$_.__SERVER}}, Name, @{n='Capacity'; e={"{0:N2}" -f ($_.Capacity/1GB)}}, @{n='FreeSpace';e={"{0:N2}" -f ($_.FreeSpace/1GB)}}

} catch {

Write-Host "ERROR!" $PCs[$i].Name $_ -ForegroundColor Red

}

}

Clear-Variable -Name "PCs"

}else{

Write-Warning "The entered value is incorrect"

}

Немного теории про переменные:

Переменная — это единица памяти, в которой хранятся значения. Рекомендуется, чтобы имена переменных включали только буквенно-цифровые символы и символ подчеркивания (_). Имена переменных, включающие пробелы и другие специальные символы, трудно использовать и следует избегать.

В PowerShell существует несколько различных типов переменных.

  • Созданные пользователем переменные: созданные пользователем переменные создаются и поддерживаются пользователем. По умолчанию переменные, созданные в командной строке PowerShell, существуют только во время открытия окна PowerShell. При закрытии окон PowerShell переменные удаляются. Чтобы сохранить переменную, можно добавить ее в профиль PowerShell. Можно также создавать переменные в скриптах с глобальными, скриптами или локальными область.

  • Автоматические переменные: автоматические переменные хранят состояние PowerShell. Эти переменные создаются PowerShell, и PowerShell изменяет их значения в соответствии с требованиями, чтобы обеспечить их точность. Пользователи не могут изменить значение этих переменных. Например, $PSHOME переменная сохраняет путь к каталогу установки PowerShell.

  • Переменные предпочтения: переменные предпочтения хранят пользовательские настройки для PowerShell. Эти переменные создаются PowerShell и заполняются значениями по умолчанию. Пользователи могут изменять значения этих переменных. Например, $MaximumHistoryCount переменная определяет максимальное количество записей в журнале сеансов.

Теперь с картинками:

  • Переменные в powershell начинаются со знака "$". Имена переменных не зависят от регистра, то есть переменные $nameVar и $NAMEvar - одна и та же переменная. Присвоение значения переменной происходит через оператор "=".

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост
  • Имена переменных могут включать пробелы и специальные символы. Например: ${name of variable}. Использование такой вариации имени сомнительно, но поддерживается.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост
  • После присвоения значения переменная будет иметь свой тип. У всех типов переменных есть общие и уникальные свойства и методы, к которым можно обращаться через точку. Для того, чтобы узнать какие методы и свойства есть у текущей переменной, можно воспользоваться командой Get-Member, как в примере ниже.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Тип переменной $name - System.String, то есть строковый.

Для работы с массивами объектов в переменных 2 очень важных свойства:

Length (длина) и Count (количество). Зачастую данные свойства используют для определения элементов в массиве, но часто ошибочно используют Length, когда желательно использовать Count. Дело в том, что свойство Length действительно в большинстве сценариев отображает количество элементов массива, кроме случая, когда в массиве один элемент строкового типа. В этом случае свойство Length выдаст количество символов в строке.

Примеры получения этих свойств ниже:

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Разница в значении свойств Length и Count проявляется в примере переменной $var_text. Свойство Length отобразило количество символов в строке (длину). Свойство Count отобразило отобразило количество строк (или объектов в массиве). Поэтому для корректности крайне рекомендуется использовать свойство Count для определения количества элементов массива.

Анализ

Первая проблема данного кода - обильное использование алиасов, не прозрачных конструкций и отсутствие комментариев. Попробуем разобраться, попутно изменив код на более читаемый и оставив комментарии.

Начнём с того, что приведем скрипт в читаемый вид, выровняв основные блоки кода:

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Отформатированный в читаемый вид изначальный текст скрипта.

На вход описанному блоку скрипта должна прийти переменная $SearchBase со значением отличным от символа "0". Открывает выполнение кода условный оператор if () else. Условие проверки странное, так как минимально необходимая обычно проверка - это проверка на пустоту какой-либо необходимой для выполнения блока кода переменной, но для этого достаточно оставить в проверке if переменную без операторов сравнения. Здесь же у нас if получит TRUE в случае, если $SearchBase не будет эквивалентен символу "0".

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Учитывая, что нам не известно какие значения $SearchBase может принимать, менять логику проверки не стоит. С учетом анализа дальнейшего использования данной переменной, становится ясно, что она используется для определения области в домене Active Directory, из которой будут выбираться объекты компьютеров в командлете Get-ADComputer

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Исходя из этого (и из примеров использования Get-ADComputer), переменная $SearchBase должна содержать строку DN (Distinguished Name) контейнера Active Directory в формате

CN=Computers,OU=Desktop,OU=Moscow,DC=domainName,DC=local

Допустим, в переменной $SearchBase у нас все таки что-то похожее на Distinguished Name контейнера в AD (либо корень домена - "DC=domainName,DC=local, такое определение области тоже имеет место быть). Идем дальше: алиас select меняем на полное имя командлета Select-Object

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Здесь у нас происходит следующее: сначала получаем все объекты компьютеров из AD по указанному контейнеру в переменной $SearchBase.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Затем по конвейеру (символ | ) результаты выполнения этой команды передаются на команду Select-Object:

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Командлет Select-Object выбирает указанные свойства объекта или набора объектов. В нашем случае из свойств объектов компьютеров Active Directory выбирается только свойство Name. Набор свойств по умолчанию, доступных в объекте компьютера, возвращаемый командлетом Get-ADComputer представлен ниже.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Затем все имена компьютеров сохраняются в переменную $PCs. То есть, если после оператора присвоения переменной (символ =) происходит выполнение нескольких командлетов с передачей результатов по конвейеру, в переменную будет сохранен результат выполнения последнего командлета (в нашем случае это Select-Object).

Таким образом, в переменную $PCs (при корректной передаче $SearchBase, естественно) будет сохранен массив свойства Name объектов компьютеров из AD. Примерно следующего вида:

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Далее идет цикл For для обработки элементов массива переменной $PCs.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

В условиях цикла For стоит перебор по одному элементу массива $PCs, начиная c нулевого ($i=0; $i -lt $PCs.Length; $i++). Условием остановки цикла является перечисление всех объектов из переменной. Для решения данной задачи немного проще использовать цикл Foreach, но про него поговорим в следующей статье. Единственное исправим $PCs.Length на $PCs.Count

Затем, для каждого элемента массива выполняется конструкция Try {} Catch {}.

Блок Try {} будет выполняться для каждого элемента массива, блок Catch {} будет выполнен только в случае, если в блоке Try будет зарегистрирована исключительная ситуация (ошибка при выполнении командлета, например).

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

В блоке Try {} выполняется три командлета:

  • получение информации о Wmi-объекте win32_volume (раздел диска) с удаленного компьютера (командлет Get-WmiObject). Первый параметр командлета Get-WmiObject -Class является позиционным, и его можно не указывать, но такая практика не является рекомендуемой, так как это усложняет чтение кода. Второй параметр -ComputerName определяет имя сервера \ рабочей станции из массива переменной $PCs. Так как в переменной $PCs у нас хранится массив свойств Name, то к этому свойству через символ точки и обращаемся, при этом указав порядковый номер элемента с помощью квадратных скобок. То есть, в записи $PCs[$i].Name - $PCs это весь массив свойств имен компьютеров из Active Directory. В квадратных скобках указан текущий номер элемента массива в цикле For, а если это первая итерация, то там у нас будет 0. И через символ точки "." мы получаем имя компьютера для передачи в параметр -ComputerName. Параметр -ErrorAction определяет поведение консоли при обработке вероятной ошибки (исключительной ситуации, например компьютер целевой не доступен и не удается получить информацию), при выполнении данного командлета.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост
  • Значение параметра -ErrorAction Stop означает, что в случае исключительной ситуации, дальнейшее выполнение блока Try {} будет прекращено в рамках данного прохода цикла For и будет выполнен код из блока Catch {}, который как раз и служит для отработки кода в исключительных ситуациях.

Для того, чтобы понимать происходящее в коде, крайне важно понимать с каким объектом (и какие у него свойства) в данный момент происходит действо.

Для примера, разберем какого типа возвращает объекты командлет Get-WmiObject. Для этого попробуем выполнить следующее:

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Таким образом, можно увидеть какие свойства и какие значения этих свойств есть у объекта типа win32_volume. Вывод свойств по умолчанию у объектов разный, и зачастую избыточен, поэтому после того, как вы поняли какие свойства вас интересуют, полезно будет научиться использовать следующие командлеты:

Select-Object - командлет, используемый для отображения только указанных свойств переданных по конвейеру объектов:

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Where-Object - командлет, используемый для фильтрации массива объектов по условному свойству (или совокупности свойств). Рассмотрим пример ниже с массивом объектов-служб в переменной $services. Допустим, нам необходимо отфильтровать и получить только сервисы в переменную $targetService которые имеют в DisplayName слово "Update" и у которых статус "Running":

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Фигурные скобки с условиями для командлета Where-Object практически всегда используются, поэтому просто привыкните пока использовать данный командлет в таком режиме. Из нового здесь у нас использование переменной $_ - что это такое и зачем она нужна.

Если вкратце, то $_ это алиас для автоматической переменной $PSItem PowerShell, используемый в скриптблоках, обрабатывающих текущий объект, например в конвейере. То есть $_ хранит в себе текущий объект, переданный по конвейеру.

Вернемся к нашим баранам

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Далее по скрипту передача по конвейеру Wmi-объекта на командлет Where-Object с целью фильтрации. Условием для фильтрации является эквивалентность свойства Name WMI-объекта значению "C:\". То есть, фильтр выставлен, чтобы дальше по конвейеру пошли только объекты, которые являются логическим диском C:\.

Затем используется уже известный командлет Select-Object, но с интересным способом изменения отображаемых полей свойств приходящего WMI-объекта при отображении:

  • свойство __SERVER меняется ComputerName

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост
  • свойство Capacity останется в таком же виде, но значение его будет изменено согласно формуле $_.Capacity/1GB.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост
  • свойство FreeSpace останется в таком же виде, но значение будет изменено согласно формуле $_.FreeSpace/1GB.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост
  • Также будет выведено свойство Name без изменений

Касательно изменений значений объема и свободного - $_Freespace / 1GB.

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост

Такого рода преобразование используется в случаях когда значения свойств хранятся с байтах (а это наш случай), а мы хотим вывести значение в гигабайтах.

Затем идет блок кода Catch, в котором отработает командлет Write-Host - который красным цветом напишет в консоль "ERROR!", имя текущего сервера, по которому не удалось отработать блок Try. Далее, в конце каждой итерации сработает командлет очистки переменной $PCs. Затем описано блок Else, скриптблок которого отработает в случае, если условие $SearchBase -ne "0" не будет выполнено. Скриптблок содержит один командлет, который напишет текст "The entered value is incorrect" в консоль.

Конечный, немного поправленный блок скрипта выложу картинкой

Cat's & Lamp. Powershell. Разбор примеров. Часть 1. <(x..o)> Powershell, Системное администрирование, Автоматизация, Гифка, Длиннопост
Показать полностью 25
Мои подписки
Подписывайтесь на интересные вам теги, сообщества, авторов, волны постов — и читайте свои любимые темы в этой ленте.
Чтобы добавить подписку, нужно авторизоваться.

Отличная работа, все прочитано! Выберите