Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Powershell

С этим тегом используют

Windows Все
41 пост сначала свежее
28
igor888888
1 год назад
Лига Сисадминов

Powershell на linux⁠⁠

Есть ли те кто использует powershell на линуксе?

Powershell на linux Windows, Linux, Powershell

С какими подводными камнями столкнулись?


Суть - моя компания очень активно избавляется от винды - а вот переписывать кучу автоматизаций с шелла на тот же питон - я не горю желанием.

Если совместимость неплохая - то скрипты сохраняться только потеряв виндозависимую часть

На reddit тоже спрашивал - но ценной информации ноль....

https://www.reddit.com/r/PowerShell/comments/1cizrrw/comment...

Показать полностью
[моё] Windows Linux Powershell
43
6
CherryBrandy50ml
CherryBrandy50ml
1 год назад

Куда расти из техподдержки ?⁠⁠

Здравствуйте коллеги, у кого есть какие успешные кейсы роста из технической поддержки?

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

собеседование #1: Вопросы про dns и dhcp. Принципы и основы построения сетей и связывания устройств в сети. Вопросы про то на каком порту работает то и это. отличие Pop3 От Imap. Что делают консольные команды VLOOKUP, tracert и т.п. под конец добил вопросами про RAID массивы...

собеседование #2: Здрасьте здрасьте, то да се, расскажите про предыдущий опыт...гм. Ну понятно(опыта релевантного не было). Ну в целом, если не занят приходи завтра ))

Вот так в итоге я устроился в техподдержку ServiceDesk + звонки. Разбираемся с проблемами у пользователей в 1С (но это не дает пониманию об 1С, не могу сказать что приобретаю опыт по ней, просто визуально теперь не пугает))).
Вопрос в том, на чтобы тратить свободное время чтобы двинуться из техподдержки: Linux?Работа с виртуальными машинами? скрипты на bash и PowerShell ? а мб прастихоспаде 1С ??(все это предполагаю в виде каких-нибудь плейлистов на ютубе или курсов на степике, ибо за курсы уже уплочено не раз - знали плаваем и в любом случае надо учиться самому))))

*Как вариант пройти курс на stepik по SQL. Вижу в банках, вакансии в техподдержке и там из требований в основном SQL (я так понимаю отчетики выводить), но хз есть ли оттуда куда дальше расти.

*есть некий уровень поддержки L2 и чем они там занимаются, какие проблемы решают? (можете привести примеры задач которые становятся перед ними). И есть нечто абстрактно-недостижимое и романтизированное DevOps (судя, по комментариям от знакомых, там все сложно и "лучше не лезь оно сожрет тебя")

Куда вообще можно вырасти из техподдержи ? и куда направить свое внимание для дальнейшего роста? и что не мало важно, если условное программирование и SQL ты еще можешь практиковать на своем стареньком ноуте, то не представляю как практиковать " типичные задачи по практике специалиста технической поддержки (развертывание чего-нибудь и настройка).

Показать полностью
Service Desk 1С SQL Powershell Virtualbox Техническая Карьера Профессия Поиск работы Вакансии Собеседование Трудовые отношения Опыт Карьерный рост Зарплата Системный Блок Системное администрирование Права администратора Текст
21
15
igor888888
1 год назад
Лига Сисадминов

Посчитать размер десятков миллионов папок (dfs)⁠⁠

Привет!

Есть необходимость эпизодически делать отчет по месту на файловых шарах - ACL и размер.

ACL проблем не вызывает, а посчитать размер папки с миллионами вложений - сложнее.

Использую powershell

Get-ChildItem не подходит - медленно

В итоге нашел два решения

1) .net (надежно, медленно)

([System.IO.DirectoryInfo] $_).EnumerateFile('*', 'AllDirectories') | ForEach-Object {$totalSize = $totalSize + $_.Length;}

2) COM - довольно стремно, быстрее иногда в разы

$com = New-Object -comobject Scripting.FileSystemObject

$folder_info = $com.GetFolder($_)

totalSize = $folder_info.size

Рылся по инету месяцами - ничего более не нашел

Есть у кого какие мысли?

[моё] Powershell Dfs Windows Текст
17
53
rudm
rudm
1 год назад
Лига Сисадминов
Серия Программизмы

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера⁠⁠

Поскольку Windows 7 и CMD, а вместе с ней и WMIC, прощаются с нами возникла необходимость переписать предыдущий CMD скрипт для сбора основной информации о железе и софте локального ПК на Powershell.

В новой версии я сделал HTML-таблицу проще, убрал некоторую лишнюю информацию и внес еще кое-какие никому не интересные изменения. Новый скрипт умеет экспортировать данные в *.json, правильный *.csv с кавычками, удобочитаемый *.xml с понятными названиями тегов и в *.html как графическое представление собранной информации.

Зачем нужен этот велосипед, скажете вы, если уже есть hwinfo, aida, msinfo32, siw, everest и прочие? К сожалению, ни одна из вышеперечисленных программ не удовлетворяет полностью моим задачам. Они либо платные, либо требуют установки, либо не умеют в командную строку, либо требуют дополнительных действий со стороны пользователя, либо же их функционал избыточен.

Скрипт же можно изменять под ваши конкретные нужды просто редактируя код в блокноте или Powershell ISE. Linux way, bitch. Пардон. Достаточно не нарушать структуру вложенности главного словаря $PCInfo в котором хранится вся обработанная и готовая к выводу информация. То есть, не плодить еще вложенные словари внутри уже вложенных словарей. Больше словарей богу словарей! (Нет).

Пример работы скрипта при экспорте в *.HTML файл.

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Отображение информации о железе ПК в виде *.HTML файла, для просмотра которого достаточно любого браузера.

Так выглядит информация экспортированная в *.csv и открытая в MS Excel

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Результаты отображения информации в формате *.CSV в программе MIcrosoft Excel

Помните, что в российском Excel разделителем в CSV считается не запятая, а точка с запятой ; Соответственно для корректного отображения *.csv в Excel нужно включить в скрипте использование региональных стандартов.

Если хотим забирать инфу в какую-нибудь NoSQL базу, то лучше всего подойдет экспорт в JSON

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Результаты отображения информации в формате *.JSON

Приятно удивило, что экспорт в JSON в Powershell делается буквально двумя строчками при условии, что вы скармливаете в конвейер [ordered]Dictionary или [PSCustomObject].

Для любителей смотреть CSV в блокноте, можно открыть CSV в блокноте.

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Скромное и лаконичное обаяние *.CSV

Выше показан результат экспорта в правильный международный *.csv, с запятыми в качестве разделителей и токенами в кавычках, как и должно быть согласно CSV стандарту. Акцентирую на этом внимание потому, что некоторые производители, - да, Microsoft? - считают, что заключать токены строки в кавычки при экспорте в *.CSV необязательно.

Экспорт в формат XML. При желании, информацию в таком виде тоже можно хранить в NoSQL базе или просто в виде файлового хранилища на какой-нибудь админской шаре.

Powershell скрипт для сбора информации об аппаратной конфигурации компьютера Программа, Windows, Powershell, Длиннопост

Отображение вывода в *.XML формате

Скачать скрипт с комментариями на английском можно, конечно, с github'a alive-one/PowerShell-System-Hardware-Info: PowerShell script to collect major hardware and some software information on system (github.com)

С комментариями на русском из темы форума ixbt.com Powershell скрипт для сбора информации с локального ПК - Конференция iXBT.com

P.S. Скрипт можно сделать более функциональным:

01. Добавить возможность собирать информацию об удаленных компьютерах без загрузки на эти самые компьютеры. Хотя, в принципе, ничто не мешает вам, как админу, загружать скрипт на компьютеры пользователей и писать информацию в нужном формате на шару. Или же сразу забирать с клиентов готовые результаты.

02. Писать собранную информацию в, например, MySQL базу данных.

03. Собирать более детальную информацию о статусе и состоянии жестких дисков.

Если это нужно кому-то кроме меня, прошу поддержать меня рублем. Чтобы я знал, что не зря трачу время. Поскольку время моё ограничено, увы, а финансовая жопа постоянна, двойное увы.

Показать полностью 5
[моё] Программа Windows Powershell Длиннопост
40
29
pwnmine
pwnmine
1 год назад
Лига Сисадминов

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
[моё] Powershell Системное администрирование Автоматизация Гифка Длиннопост
3
23
pwnmine
pwnmine
1 год назад
Лига Сисадминов

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)>⁠⁠

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

А как это трогать?

Powershell поддерживает следующие полезные интерактивные действа на клавиатуре, помимо ввода символов в консоль:

  • Стрелка влево \ вправо: перемещение курсора влево и вправо посимвольно

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Shift+стрелка влево \ вправо: выделение текста посимвольно по направлению стрелки

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Ctrl+стрелка влево \ вправо: перемещение курсора по направлению стрелки по словам

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Ctrl+Shift+стрелка влево \ вправо: выделение текста по слову за нажатие

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Кнопка Home: перемещение курсора в начало строки

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Кнопка End: перемещение курсора в конец строки

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

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

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Ctrl+Delete: удаление слова после курсора

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

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Ctrl+Backspace: удаление слова перед курсором

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Стрелки вверх \ вниз: перемещение вверх и вниз по истории команд

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Ctrl+W : Закрыть текущее окно консоли

Cat's & Lamp. Powershell - образовательное. Часть 1 <(o,,O)> Автоматизация, Системное администрирование, Powershell, Картинка с текстом, Скрипт, Гифка, Длиннопост
  • Ctrl+C \ Ctrl+V: классика - копировать \ вставить из буфера обмена

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

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

Сегодня скучно, но это нужно знать :)

P.S. Лайфак напоследок, если в консоли (powershell \ cmd \ проводник) выполнить ncpa.cpl в Windows, в моментах жить станет приятнее.

P.P.S. Для 14ти моих подпищикш - накидывайте в комменты темы, если интересуют практические кейсы по автоматизации рутинных операций на PoSh.

Показать полностью 16
[моё] Автоматизация Системное администрирование Powershell Картинка с текстом Скрипт Гифка Длиннопост
11
75
pwnmine
pwnmine
1 год назад
Лига Сисадминов

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще⁠⁠

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

На дворе Апрель месяц 2003 год. Птички поют, кукушки кукуют. Microsoft выпускает в свет свою прекрасную Windows Server 2003. Системные администраторы в слезах счастья рассказывают любителям консоли как много изменений в AD, в безопасности, в *any_windows_feature_name* произошло и как теперь здорово пользоваться окнами.

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Одуревший от счастья нажиматель кнопок на клавиатуре.

И всё бы хорошо, но любители пингвинов стали активнее намекать жалким любителям GUI о том, что консоль это божественно, а кнопки мышью нажимать - удел ламеров. Bash, мол, позволяет скрипты писать и вообще делать всё что душе угодно в плане автоматизации.

Конечно, в Windows есть cmd и даже есть возможность писать bat-скрипты, но выглядит енто, конечно убого. Глобальных отличий непосредственно в самих оболочках со стороны конечного пользователя черного экрана не так много, но дьявол скрыт в мелочах.

Для начала посмотрим, что же енто за cmd \ bash такие и зачем они собственно нужны.

command line interpreter (CMD)

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Типичный вид cmd.exe

CMD — это командная строка для операционной системы Microsoft Windows с функциями, основанными на командах. Конвейера нет, вывод результатов в строке. Долго отсутствовали инструменты для работы с текстом.

Bourne again shell (Bash)

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Типичный вид bash

Bash — это язык командной строки и сценариев для большинства операционных систем на базе Unix/Linux. Есть конвейер, вывод результатов в строке. Имеются инструменты для работы с выводом в виде текста (grep \ awk \ cat \ tail и т.д.). Они позволяют отделить нужные буквы из строки от ненужных при выводе результатов действия команд.

Шли годы, nix-админы наращивали скилл в умении прерарировать текст, оконные админы жмакали кнопки в gui и плакали при написании bat-скриптов, попутно совместно меряясь писюнами, кому же из них работать сложнее. И так бы оно и было, пока ребята из Microsoft не решили выкатить его. Его величество Powershell.

- В чем же величие? - спросите вы.

Powershell это такая же среда выполнения скриптов и взаимодействия с OS, как и cmd \ bash. Есть одно но - powershell умеет в объекты. Он по умолчанию работает с объектами и их свойствами. Почему это так важно? Потому что вывод в строки большинства утилит и приложений, с которыми умеет работать cmd \ bash не имеют единого стандарта вывода. ipconfig может выдать вам совершенно разное полотно информации на разных OS, при разных количествах сетевых интерфейсов и просто если луна не в меркурии будет.

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Вывод текста утилитой ipconfig

Допустим вы захотели вытащить через cmd IP-адрес.

На Bash сделать это достаточно легко. Для этого достаточно использовать простую команду ниже:

ifconfig eth0 | sed -n '2 {s/^.*inet addr:\([0-9.]*\) .*/\1/;p}'

Сильно, правда? Всего regexp (регулярные выражения) надо знать, как свои 9 пальцев.

В Windows тогда вообще с этим дела никак не обстояли, поэтому приходилось изучать полотно текста и радоваться, что вообще хоть какая-то информация в консоли отображается.

С приходом powershell консоль научилась работать с объектами и при вводе командлета (название стрёмное, да, так уж они там называются): Get-NetIPAddress объекты, у которых есть одинаковые свойства, к которым можно обращаться.

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

История с объектным ориентированием консоли сильно облегчила возможность получения информации о системе. Например, теперь чтобы получить информацию об IP адресе, нет нужды изучать regexp, а достаточно запомнить, что к свойствам в объектах можно получить доступ через точку:

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Помимо этого powershell поддерживает конвейер для передачи результатов деятельности из одной команды в другую, if - else \ switch ветвления, циклы do while \ until, создание функций и своих объектов.

В первой версии Powershell 1.0 функционал был немного куцый в сравнении с текущей версией, но его объектная ориентированность уже принесла много счастья в руки любителей автоматизировать.

Вторая версия добавила возможность удаленного выполнения кода, поддержку Windows Server 2008 и Windows 7. Помимо этого большинство программных продуктов Microsoft не только нативно поддерживало работу через powershell, но и предоставляло больше возможностей, нежели GUI.

Powershell 3.0 появился рядом с Windows 2012 и Windows 8, получил еще большее развитие командлетов и возможностей отладки. В общем так и продолжалось его развитие вплоть до 5ой версии, на которой Microsoft решили, что нужно сделать cross-платформенную оболочку и объявили о создании PowerShell Core c поддержкой различных систем в названии которых отсутствует слово Windows: MacOS \ Ubuntu \ RHEL \ CentOS и так далее.

Какие еще возможности предоставляет эта оболочка я расскажу в следующей статье Cat's & Lamp.

Показать полностью 7
[моё] Powershell Системное администрирование Скрипт Автоматизация Длиннопост
17
5
RatL0ver
1 год назад
Лига тыжпрограммистов

Windows PowerShell(администратор) не выполняет команды⁠⁠

У меня возникла ошибка файловой системы - фотографии не открывались, без ошибки, только через 15-20 минут всплывало серое окно вместо фото. В безопасном режиме виндовс мне удалось выявить ошибку "2147416359".

Сначала решил просто почистить пк - CCleaner, Malwarebytes. Последний нашёл в файловой системе зараженные файлы, кои я переместил в карантин. Так как проблема не исчезла, а эти файлы не относились к важным приложениям, я их удалил.

Проблему ничего из этого не решило, однако в какой-то момент, запущенная нескольконадцать минут назад фото выдало ошибку уже: "не удалось зарегистрировать пакет". Данную ошибку рекомендуют решать командой Get-AppXPackage -AllUsers | Для каждого {Add-AppxPackage -DisableDevelopmentMode -Register “$ ($ _. InstallLocation) \ AppXManifest.xml”} в Windows PowerShell. Однако при нажатии "Enter" ничего не происходит, сколько не жди.

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

Подскажите, как это решить в конце концов?...

Windows PowerShell(администратор) не выполняет команды Компьютерная помощь, Ноутбук, Powershell
Показать полностью 1
[моё] Компьютерная помощь Ноутбук Powershell
11
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии