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

Свидания с отличиями

Казуальные, Головоломки, Новеллы

Играть

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

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

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

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

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

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

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
EgorBobrov
EgorBobrov
10 дней назад

Программы удалённого доступа⁠⁠

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

Система WIN10 21H2, в лок. сети 3 компьютера, интернет через TP-Link, проброшенных портов нет. В диспетчере задач ничего подозрительного не находится. Стандартных портов удалённого доступа на компьютере не открыто, кроме 3389.
В автозагрузке ничего нового не появилось.
Единственное, что подозрительное делалось пользователем в этот день на компутере - включался протокол IPv6 и адреса из свойств подключения этого протокола вводились в несколько сервисов Whois.

Что можно предпринять для нахождения дырки в системе ? Как можно вычислить процесс пустивший жулика в компутер ? Как-то можно поискать порты на которых висит сервер удалённого доступа или это в винде есть встроенная возможность подключения типа VNC ?

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

Системное администрирование Администрирование Компьютер Текст
19
Pandorr
19 дней назад
Искусственный интеллект

Прогресс⁠⁠

Развитие искусственного интеллекта идёт семимильными шагами. Всё чаще машины берут на себя те задачи, которые раньше выполнял человек. Рано или поздно модераторов на сайтах заменит набор символов на серваках. Да, пока что ИИ не способен точно модерировать посты и комментарии, но в конце концов это произойдёт.

А вы хотели бы, чтобы это случилось поскорее?
Всего голосов:
Опрос Искусственный интеллект Модерация Администрирование
2
zanud
1 месяц назад

UNIX-Way в госдуме⁠⁠

То, что сейчас происходит с законами - напоминает Windows-way: сперва всё разрешено и потихоньку запрещаешь всякое опасное.

Но есть еще UNIX-way: запретить вообще всё полностью, потом разрешить что-нибудь не опасное: дышать, пить воду, ходить в магазин и т.д.

Политика Администрирование Windows Unix Юмор Текст
4
27
hypo69
hypo69
1 месяц назад
Лига Сисадминов
Серия Философия PowerShell

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов⁠⁠

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

❗ Важно: Я пишу про PS7 (PowerShell 7). Он отличается от PS5 (PowerShell 5). Начиная с седьмой версии ps стал кросплатформенным. Из-за этого изменилось поведение некоторых команд.

В первой части мы установили ключевой принцип: PowerShell работает с объектами, а не с текстом. Этот пост посвящен некоторым важным инструментам PowerShell: научимся передавать объекты по конвейеру, анализировать их с помощью Get-Member, сохранять результаты в переменные и автоматизировать все это в файлах скриптов (.ps1) с экспортом результатов в удобные форматы.


1. Что такое конвейер (|)?

Конвейер в PowerShell это механизм передачи полноценных .NET объектов (а не просто текста) от одной команды к другой, где каждый следующий командлет получает структурированные объекты со всеми их свойствами и методами.

Символ | (вертикальная черта) — это оператор конвейера. Его задача — взять результат (вывод) команды, стоящей слева от него, и передать его на вход команде, стоящей справа.

Команда 1 (создает объекты) → | → Команда 2 (получает и обрабатывает объекты) → | → Команда 3 (получает обработанные объекты) → | ...

Классический UNIX-конвейер: Поток текста

В bash по конвейеру передается поток байтов, который обычно интерпретируется как текст.

Найти все процессы 'nginx' и посчитать их количество
> ps -ef | grep 'nginx' | wc -l

Здесь `ps` выводит текст, `grep` фильтрует этот текст, а `wc` считает строки. Каждая утилита ничего не знает о "процессах", она работает только со строками.

PowerShell-конвейер: Поток объектов

Пример: Давайте получим все процессы, отсортируем их по использованию CPU и выберем 5 самых "прожорливых".

> Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 5

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Здесь Get-Process создает объекты процессов. Sort-Object получает эти объекты и сортирует их по свойству CPU. Select-Object получает отсортированные объекты и выбирает первые 5.

Вы наверняка заметили в команде слова, начинающиеся с дефиса (-): -Property, -Descending, -First. Это параметры. Параметры — это настройки, переключатели и инструкции для командлета. Они позволяют управлять тем, КАК команда будет выполнять свою работу. Без параметров команда работает в режиме по умолчанию, а с параметрами вы даете ей конкретные указания.

Основные типы параметров:

  • Параметр со значением: требует дополнительной информации.

    -Property CPU: Мы говорим Sort-Object, по какому свойству сортировать. CPU — это значение параметра.

    -First 5: Мы говорим Select-Object, сколько объектов выбрать. 5 — это значение параметра.

  • Параметр-переключатель (флаг): Не требует значения. Само его наличие в команде включает или выключает определенное поведение.

    -Descending: Этот флаг говорит Sort-Object изменить порядок сортировки на обратный (от большего к меньшему). Ему не нужно дополнительное значение — он сам по себе инструкция.

> Get-Process -Name 'svchost' | Measure-Object

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Эта команда отвечает на очень простой вопрос: "Сколько именно процессов с именем svchost.exe сейчас запущено в моей системе?"

Разбор по шагам

Шаг 1: Get-Process -Name 'svchost'

Эта часть команды обращается к операционной системе и просит найти все без исключения запущенные процессы, у которых имя исполняемого файла — svchost.exe. В отличие от процессов типа notepad (которых обычно один или два), процессов svchost в системе всегда много. Команда вернет массив (коллекцию) объектов, где каждый объект — это отдельный, полноценный процесс svchost со своим уникальным ID, использованием памяти и т.д. PowerShell нашел в системе, например, 90 процессов svchost и теперь держит в руках коллекцию из 90 объектов.

Шаг 2: | (Оператор конвейера)

Этот символ берет коллекцию из 90 объектов svchost, полученную на первом шаге, и начинает передавать их по одному на вход следующей команде.

Шаг 3: Measure-Object

Поскольку мы вызвали Measure-Object без параметров (таких как -Property, -Sum и т.д.), он выполняет свою операцию по умолчанию — просто считает количество "предметов", которые ему передали. Раз, два, три ... После того как все объекты посчитаны, Measure-Object создает свой собственный объект-результат, в котором есть свойство Count, равное итоговому числу.

Count: 90 — это и есть ответ на наш вопрос. Запущено 90 процессов svchost. Остальные поля пустые, потому что мы не просили Measure-Object выполнять более сложные вычисления.

Пример с svchost и параметрами

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

Для этого нам понадобятся параметры:

  • -Property WorkingSet64: Эта инструкция говорит Measure-Object: "Из каждого объекта svchost, который к тебе придет, возьми числовое значение из свойства WorkingSet64 (это использование памяти в байтах)".

  • -Sum: Эта инструкция-флаг говорит: "Сложи все эти значения, которые ты взял из свойства WorkingSet64".

Наша новая команда будет выглядеть так:

> Get-Process -Name 'svchost' | Measure-Object -Property WorkingSet64 -Sum

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост
  1. Get-Process найдет количество объектов svchost.

  2. Конвейер | передаст их в Measure-Object.

  3. Но теперь Measure-Object работает по-новому:

    • Он берет первый объект svchost, смотрит его свойство .WorkingSet64 (например, 25000000 байт) и запоминает это число.

    • Берет второй объект, смотрит его .WorkingSet64 (например, 15000000 байт) и прибавляет к предыдущему.

    • ...и так далее для всех объектов.

  4. В итоге Measure-Object создаст объект-результат, но теперь он будет другим.

  • Count: 92: Количество объектов.

  • Sum: 1661890560: Это общая сумма всех значений WorkingSet64 в байтах.

  • Property: WorkingSet64: Это поле теперь тоже заполнено, оно информирует нас, какое именно свойство было использовано для вычислений.

2. Переменные (Обычные и специальная $_)

Переменная — это именованное хранилище в памяти, которое содержит какое-либо значение.

Этим значением может быть что угодно: текст, число, дата или, что самое важное для PowerShell, целый объект или даже коллекция объектов. Имя переменной в PowerShell всегда начинается со знака доллара ($). Примеры: $name, $counter, $processList.

Специальная переменная $_?

$_ — это сокращение для "текущий объект" или "вот эта штука". Представьте себе конвейер на заводе. По нему едут разные детали (объекты).

$_ — это та самая деталь, которая находится прямо сейчас перед вами (или перед роботом-обработчиком).

Источник (Get-Process) — высыпает на конвейер целую коробку с деталями (всеми процессами).

Конвейер (|) — заставляет эти детали двигаться по ленте по одной.

Обработчик (Where-Object или ForEach-Object) — это робот, который смотрит на каждую деталь.

Переменная $_ — это та самая деталь, которая сейчас находится в "руках" у робота.

Когда робот закончит с одной деталью, конвейер подает ему следующую, и $_ теперь будет указывать уже на нее.

Давайте посчитаем, сколько всего памяти используют процессы svchost, и выведем результат на монитор.

1. Выполняем команду и сохраняем ее сложный объект-результат в переменную $svchostMemory

> $svchostMemory = Get-Process -Name svchost | Measure-Object -Property WorkingSet64 -Sum

2. Теперь мы можем работать с сохраненным объектом. Достаем из него свойство Sum

> $memoryInMB = $svchostMemory.Sum / 1MB

3. Выводим результат на экран, используя новую переменную

> Write-Host "Все процессы svchost используют $memoryInMB МБ памяти."

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост
  • Write-Host — это специализированный командлет, чья единственная задача — показать текст непосредственно пользователю в консоли.

  • Строка в двойных кавычках: "..." - текстовая строка, которую мы передаем командлету Write-Host в качестве аргумента. Почему двойные, а не одинарные кавычки?

    В PowerShell есть два типа кавычек:

    • Одинарные ('...'): Создают буквальную строку. Все, что внутри них, воспринимается как обычный текст, без исключений.

    • Двойные ("..."): Создают расширяемую (или подстановочную) строку. PowerShell "сканирует" такую строку на предмет переменных (начинающихся с $) и подставляет на их место их значения.

  • $memoryInMB. Это переменная, в которую мы на предыдущем шаге нашего скрипта положили результат вычислений. Когда Write-Host получает строку в двойных кавычках, происходит процесс, называемый "подстановка переменных" (String Expansion):

    1. PowerShell видит текст "Все процессы svchost используют ".

    2. Затем он натыкается на конструкцию $memoryInMB. Он понимает, что это не просто текст, а переменная.

    3. Он заглядывает в память, находит значение, хранящееся в $memoryInMB (например, 1585.52).

    4. Он подставляет это значение прямо в строку.

    5. Затем он добавляет оставшуюся часть текста: " МБ памяти.".

    6. В итоге, в Write-Host передается уже готовая, собранная строка: "Все процессы svchost используют 1585.52 МБ памяти.".

Запустите блокнот!

  1. Находим процесс Блокнота и сохраняем его в переменную $notepadProcess

> $notepadProcess = Get-Process -Name notepad

  1. Обращаемся к свойству 'Id' этого объекта через точку и выводим его

> Write-Host "ID процесса 'Блокнот' равен: $($notepadProcess.Id)"

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

❗ Важно: Write-Host "ломает" конвейер. Текст, выведенный им, нельзя передать дальше по конвейеру для обработки. Он предназначен только для отображения.


3. Get-Member (Инспектор объектов)

Мы знаем, что по конвейеру "текут" объекты. Но как узнать, из чего они состоят? Какие у них есть свойства и какие действия (методы) с ними можно совершать?

командлет Get-Member (псевдоним: gm) главный инструмент для исследования. Прежде чем работать с объектом, пропустите его через Get-Member, чтобы увидеть все его возможности.

Давайте проанализируем объекты, которые создает Get-Process:

> Get-Process | Get-Member

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Разберем каждую часть вывода Get-Member.

TypeName: System.Diagnostics.Process - Это полное, официальное "имя типа" объекта из библиотеки .NET. Это его "паспорт". Эта строка говорит вам, что все объекты, которые возвращает Get-Process, являются объектами типа System.Diagnostics.Process. Это гарантирует, что у них у всех будет одинаковый набор свойств и методов. Вы можете загуглить "System.Diagnostics.Process", чтобы найти официальную документацию Microsoft с еще более подробной информацией.

  • Колонка 1: Name

Это простое, человекочитаемое имя свойства, метода или другого "члена" объекта. Именно это имя вы будете использовать в своем коде для доступа к данным или выполнения действий.

  • Колонка 2: MemberType (Тип объекта)

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

  • Property (Свойство): характеристика или порция данных, хранящаяся внутри объекта. Вы можете "прочитать" ее значение.

    • Примеры на скриншоте: BasePriority, HandleCount, ExitCode. Это просто данные, которые можно посмотреть.

  • Method (Метод): ДЕЙСТВИЕ, которое можно совершить с объектом. Методы всегда вызываются с круглыми скобками ().

    • Примеры на скриншоте: Kill, Refresh, WaitForExit. Вы бы написали $process.Kill() или $process.Refresh().

  • AliasProperty (Псевдоним свойства): дружелюбный псевдоним для другого, более длинного свойства. PowerShell добавляет их для удобства и краткости.

    • Примеры на скриншоте: WS — это короткий псевдоним для WorkingSet64. Name — для ProcessName. VM — для VirtualMemorySize64.

  • Event (Событие): УВЕДОМЛЕНИЕ о том, что что-то произошло, на которое можно "подписаться".

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

  • CodeProperty и NoteProperty: специальные типы свойств, часто добавляемые самим PowerShell для удобства. CodeProperty вычисляет свое значение "на лету", а NoteProperty — это простое свойство-заметка, добавленное к объекту.

  • Колонка 3: Definition (Определение)

Это техническое определение или "подпись" члена. Она дает вам точные детали для его использования. Ее содержимое зависит от MemberType:

  • Для AliasProperty: Показывает, чему равен псевдоним. Это невероятно полезно!

    • Пример на скриншоте: WS = WorkingSet64. Вы сразу видите, что WS — это просто короткая запись для WorkingSet64.

  • Для Property: Показывает тип данных, который хранится в свойстве (например, int для целого числа, string для текста, datetime для даты и времени), и что можно с ним делать ({get;} — только читать, {get;set;} — читать и изменять).

    • Пример на скриншоте: int BasePriority {get;}. Это целочисленное свойство, которое можно только прочитать.

  • Для Method: Показывает, что метод возвращает (например, void — ничего, bool — true/false) и какие параметры (входные данные) он принимает в скобках.

    • Пример на скриншоте: void Kill(). Это значит, что метод Kill ничего не возвращает и может быть вызван без параметров. Также есть вторая версия void Kill(bool entireProcessTree), которая принимает логическое значение (true/false).

В виде таблицы

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Пример: Работа с окнами процессов

1. Проблема:

"Я открыл много окон Блокнота. Как мне программно свернуть все, кроме главного, а затем закрыть только то, у которого в заголовке есть слово 'Untitled'?"

Откройте несколько экземпляров блокнота (Windows Notepad) на компьютере

2. Исследование с Get-Member:

Нам нужно найти свойства, связанные с окном и его заголовком.

> Get-Process -Name notepad | Get-Member

Анализ результата Get-Member:

  • Листая свойства, мы находим MainWindowTitle. Тип string. Отлично, это заголовок главного окна!

  • В методах мы видим CloseMainWindow(). Это более "мягкий" способ закрыть окно, чем Kill().

  • Также в методах есть WaitForInputIdle(). Звучит интересно, возможно, это поможет дождаться, пока процесс будет готов к взаимодействию.

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Get-Member показал нам свойство MainWindowTitle, которое является ключом к решению задачи и позволяет взаимодействовать с процессами на основе состояния их окон, а не просто по имени.

3. Решение:

Теперь мы можем построить логику, основанную на заголовке окна.

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост
Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост
Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Пример: Найти родительский процесс

1. Проблема:

"Иногда я вижу в системе много дочерних процессов chrome.exe. Как мне узнать, какой из них является главным, "родительским" процессом, который их всех запустил?"

2. Исследование с Get-Member:

Нам нужно найти что-то, что связывает один процесс с другим.

> Get-Process -Name chrome | Select-Object -First 1 | Get-Member

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Анализ результата Get-Member:

  • Внимательно просматривая список, мы находим свойство типа CodeProperty с именем Parent.

  • Его определение (Definition) — System.Diagnostics.Process Parent{get=GetParentProcess;}. Это вычисляемое свойство, которое при обращении к нему возвращает объект родительского процесса.

3. Решение:

Теперь мы можем написать скрипт, который для каждого процесса chrome будет выводить информацию о его родителе.

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост
Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост
Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Мы сразу видим, что процессы с ID 4756, 7936, 8268 и 9752 были запущены процессом с ID 14908. Также можно заметить интересный случай с процессом ID: 7252, у которого родительский процесс не определился (возможно, родитель уже успел завершиться к моменту проверки). Модификация скрипта с проверкой if ($parent) аккуратно обрабатывает этот случай, не вызывая ошибки. Get-Member помог нам обнаружить "скрытое" свойство Parent, которое предоставляет мощные возможности для анализа иерархии процессов.

4. Файл .ps1 (Создание скриптов)

Когда ваша цепочка команд становится полезной, вы захотите сохранить ее для многократного использования. Для этого и нужны скрипты — текстовые файлы с расширением .ps1.

Разрешение на запуск скриптов

По умолчанию в Windows запрещен запуск локальных скриптов. Чтобы это исправить для текущего пользователя, выполните один раз в PowerShell от имени администратора:

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Это безопасная настройка, которая разрешает запускать ваши собственные скрипты и скрипты, подписанные доверенным издателем.

Пример скрипта system_monitor.ps1

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

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост
Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Примечание: функция Export-Results будет определена в следующем разделе как пример хорошей практики.

5. Экспорт результатов

Чистые данные — это хорошо, но часто их нужно представить в удобном для человека или другой программы виде. PowerShell предлагает множество командлетов для экспорта.

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

Дополнение к скрипту: функция экспорта

Давайте добавим в наш скрипт system_monitor.ps1 функцию, которая будет заниматься экспортом. Поместите этот код перед вызовом Export-Results.

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов Powershell, Автоматизация, Windows, IT, Администрирование, Гайд, Длиннопост

код на github

Теперь наш скрипт не просто собирает данные, но и аккуратно сохраняет их в двух форматах: CSV для анализа и HTML для быстрого просмотра.

Заключение

  1. Конвейер (|) — главный инструмент для объединения команд и обработки объектов.

  2. Get-Member — анализ объектов, который показывает, из чего они состоят.

  3. Переменные ($var, $_) позволяют сохранять данные и обращаться к текущему объекту в конвейере.

  4. Файлы .ps1 превращают команды в переиспользуемые инструменты автоматизации.

  5. Командлеты экспорта (Export-Csv, ConvertTo-Html) Экспортируют данные в соответствующем формате.

В следующей части мы применим эти знания для навигации и управления файловой системой, исследуя объекты System.IO.DirectoryInfo и System.IO.FileInfo.

К первой части

Полезно? Подпишись.
Понравилось — ставь «+»
Удачи! 🚀

UPD:

Статья на github:
https://github.com/hypo69/1001-python-ru/blob/master/articles/Философия PowerShell/02.md

Исходники:
system-monitor.ps1:
https://github.com/hypo69/1001-python-ru/blob/master/articles/Философия PowerShell/code/02/system_monitor.ps1


Третья часть:
Философия PowerShell. Часть 3: Навигация и управление файловой системой. Знакомство с операторами логики и функциями

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView

А давайте встроим ии в powershell

Показать полностью 19
[моё] Powershell Автоматизация Windows IT Администрирование Гайд Длиннопост
7
135
hypo69
hypo69
1 месяц назад
Лига Сисадминов
Серия Философия PowerShell

Философия PowerShell. Части 0,1 Вступление и первый командлет⁠⁠

Часть 0.

Что было до PowerShell?
В 1981 году вышел MS-DOS 1.0. с командным интерпретатором COMMAND.COM. Для автоматизации задач использовались пакетные файлы (.bat) — простые текстовые файлы с последовательностью консольных команд. Удивительный аскетизм командной строки на фоне POSIX совместимых систем где уже с 1979 года существовала оболочка Борна (sh).

Состояние рынка оболочек на момент выхода MS-DOS 1.0 (август 1981)

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Что такое sh, csh

  • sh — Bourne Shell, основной скриптовый интерпретатор UNIX с 1977 года.

  • csh — C Shell, улучшенная оболочка с синтаксисом, похожим на C, и удобствами для интерактивной работы.

  • Эти оболочки поддерживали редиректы, пайпы, переменные, функции и условия — всё, что сделало UNIX мощным инструментом автоматизации.


Microsoft ориентировалась на дешёвые 16-битные IBM PC, которые имели мало памяти (обычно 64–256 КБ),не имели многозадачности и были предназначены для домашнего и офисного использования, а не серверов. UNIX был платным, требовал сложной архитектуры и опыта, а бухгалтеры и инженеры, не системные админы, им требовалась быстрая и простая ОС

Интерфейс DOS Вместо сложного sh представлял один файл command.com с скудным набором внутренних команд (dir, copy, del и т.p.) без функций, циклов и модулей.

Были и внешние команды — отдельные исполняемые файлы (.exe или .com). Примеры: FORMAT.COM, XCOPY.EXE, CHKDSK.EXE, EDIT.COM. Сценарии исполнения записывались в текстовый файл с расширением .bat (batch file)

Примеры конфигуарционных файлов:

  • AUTOEXEC.BAT

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост
  • CONFIG.SYS

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

В Майкрософт было понятно, что DOS тупиковая ветвь и они почти сразу начали разрабатывать принциально новое ядро.

Ядро Windows NT(New Technology) впервые появилось с релизом операционной системы:

Windows NT 3.1 — 27 июля 1993 года


  • Разработка началась: в 1988 году под руководством Дейва Катлера (бывшего инженера DEC, создателя VMS) с целью создать полностью новую, защищённую, переносимую и многозадачную ОС, не совместимую с MS-DOS на уровне ядра.

  • NT 3.1 — называлась так, чтобы подчеркнуть совместимость с Windows 3.1 на уровне интерфейса, но была совершенно новой архитектурой.


Что принесло ядро NT:

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Линейка NT:

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Ядро NT было хорошим, годным продуктом от Майкрософт, если бы не одно большое «НО!»


Но средствам автоматизации и администрирования не уделялось должного внимание вплоть до 2002 года.

Microsoft использовала совершенно разные подходы, стратегии и инструменты для администрирования. Всё это было разрозненным, часто GUI-ориентированным и не всегда автоматизируемым.


Список некоторых инструментов:

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Инструменты автоматизации

  • VBScript-файлы (*.vbs) для администрирования пользователей, сетей, принтеров и служб. Привет✋ вирус "ILOVEYOU"

  • WMIC — командный интерфейс к WMI (например: wmic process list brief).

  • .cmd скрипты с вызовами net, sc, reg, wmic, и т.д.


Windows Scripting Host (WSH)

  • Впервые появился в Windows 98, активно использовался в Windows 2000 и XP.

  • Позволял выполнять VBScript и JScript-файлы из командной строки:
    > Set objShell = WScript.CreateObject(«WScript.Shell»)
    > objShell.Run «notepad.exe»

HTA (HTML Applications)

Чистое шаманство. Если кратко, то это приложения, написанные на HTML и скриптах (чаще всего VBScript или JScript), которые запускались с полноценным GUI и имели полный доступ к Windows через WSH — без ограничений, как обычные сайты в браузере.


Часть 1.

Только в 2002 году в компании сформулировался проект Monad , который позже вылился в powershell:

Начало разработки: ориентировочно в 2002 году

Публичное анонсирование: 2003 год, как «Monad Shell»

Первые бета-версии: появились к 2005 году

Финальный релиз (PowerShell 1.0): ноябрь 2006 года

Автором и главным архитектором проекта Monad / PowerShell является Джеффри Сновер (Jeffrey Snover)

Сегодня PowerShell Core работает на Windows macOS Linux

Параллельно шла разработка фреймворка .NET и powershell был в нее глубоко интегрирован, в следующих частях я покажу примеры

А теперь — самое главное!


Главное преимущество PowerShell по сравнению с классическими командными оболочками — это то, что он работает с объектами, а не с текстом. Когда вы выполняете команду, она возвращает вам не просто текст, а структурированный объект (или коллекцию объектов), у которого есть четко определенные свойства (Properties) и методы (Methods).

Смотрите, как PowerShell элегантно решает задачу благодаря работе с объектами

Как было: dir и ручной парсинг

В CMD (и в старом COMMAND.COM, и в cmd.exe) команда dir возвращает результат работы как обычный текст. Пример вывода:

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

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

for /f "tokens=5,6" %a in ('dir ^| findstr /R "[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]"') do @Echo %a %b

  • Это страшно сложно читается, зависит от локали, формата даты, шрифта. И ломается при пробелах в названиях


PowerShell: объекты вместо текста

Простой и читаемый пример:

> Get-ChildItem | Select-Object Name, Length

Результат:

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост
  • Get-ChildItem возвращает массив объектов файлов/папок

  • Select-Object позволяет легко получить нужные свойства


Что на самом деле возвращает Get-ChildItem?

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

> $item = Get-ChildItem -Path .\11.md
> $item | Get-Member

Результат:

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

PowerShell возвращает объекты типа System.IO.FileInfo, у которых есть:

  • Свойства (Name, Length, CreationTime, Extension, …)

  • Методы (Delete(), CopyTo(), MoveTo() и т.д.)

Вы работаете с полноценными объектами, а не со строками.


Синтаксис «Глагол-Существительное»:

PowerShell использует строгий и логичный синтаксис команд:
Глагол-Существительное (Verb-Noun)

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Существительное

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост
Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Даже если вы не знаете точной команды, вы можете предположить её по смыслу — и почти всегда угадаете.


Командлет Get-Help — ваш главный помощник.

Получим справку о самой справке:
> Get-Help Get-Help

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Получим базовую справку о команде для работы с процессами:
> Get-Help Get-Process

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Посмотрим примеры использования этой команды:
> Get-Help Get-Process -Examples

Если файл `help` не найден в системе — получим такое сообщение:

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Решение:
> Update-Help

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост

Для одного языка:
> Update-Help -UICulture en-US

Философия PowerShell. Части 0,1 Вступление и первый командлет Powershell, Cmd, Администрирование, Windows, Shell, Длиннопост


`-Examples` это невероятно полезный параметр, который часто дает готовые решения для ваших задач.

  1. Получим максимально подробную информацию о команде:
    > Get-Help Get-Process -Full

    В следующей части: конвеер или цепочка команд (PipeLines)

    Полезно? Подпишись.
    Понравилось — ставь «+»
    Удачи! 🚀

UPD:

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов

Философия PowerShell. Часть 3: Навигация и управление файловой системой. Знакомство с операторами логики и функциями

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView

А давайте встроим ии в powershell

Показать полностью 17
[моё] Powershell Cmd Администрирование Windows Shell Длиннопост
28
41
hypo69
hypo69
1 месяц назад
Лига Сисадминов
Серия Философия PowerShell

Диагностика и восстановление дисков с помощью PowerShell⁠⁠

продолжение статьи Как проверить и исправить ошибки на жестком диске в Windows: шпаргалка по CHKDSK и PowerShell

Дисклеймер. На пикабу все еще не завезли редактор кода, поэтому такое убогое форматирование. Впрочем, вы можете читать статью на github


PowerShell позволяет автоматизировать проверки, выполнять удалённую диагностику и создавать гибкие скрипты для мониторинга. Это руководство проведёт вас от базовых проверок до глубокой диагностики и восстановления дисков.

Версия: Руководство актуально для Windows 10/11 и Windows Server 2016+.

Ключевые командлеты для работы с дисками

Основные командлеты

Диагностика и восстановление дисков с помощью PowerShell Powershell, Инструкция, Администрирование, Диагностика, IT, Длиннопост

Шаг 1: Базовая проверка состояния системы

Начните с общей оценки состояния дисковой подсистемы.

Просмотр всех подключенных дисков

Команда Get-Disk предоставляет сводную информацию о всех дисках, которые видит операционная система.

Get-Disk

Вы увидите таблицу с номерами дисков, их размерами, статусом (Online или Offline) и стилем разделов (MBR или GPT).

Пример: Найти все диски, которые находятся в офлайне.

Get-Disk | Where-Object IsOffline -eq $true

Проверка физического «здоровья» дисков

Командлет Get-PhysicalDisk обращается к состоянию самого оборудования.

Get-PhysicalDisk | Select-Object FriendlyName, MediaType, HealthStatus, OperationalStatus

Обратите особое внимание на поле HealthStatus. Оно может принимать значения:

  • Healthy: Диск в порядке.

  • Warning: Есть проблемы, требуется внимание (например, превышение порогов S.M.A.R.T.).

  • Unhealthy: Диск в критическом состоянии и может отказать.


Шаг 2: Анализ и восстановление логических томов

После проверки физического состояния переходим к логической структуре — томам и файловой системе.

Информация о логических томах

Команда Get-Volume показывает все смонтированные тома в системе.

Get-Volume | Format-Table DriveLetter, FileSystem, HealthStatus, SizeRemaining, Size

Ключевые поля:

  • DriveLetter — Буква тома (C, D и т.д.).

  • FileSystem — Тип файловой системы (NTFS, ReFS, FAT32).

  • HealthStatus — Состояние тома.

  • SizeRemaining и Size — Свободное и общее пространство.

Проверка и восстановление тома (аналог chkdsk)

Командлет Repair-Volume — это современная замена утилиты chkdsk.

1. Проверка тома без исправлений (только сканирование)

Этот режим безопасен для выполнения на работающей системе, он только ищет ошибки.

Repair-Volume -DriveLetter C -Scan

2. Полное сканирование и исправление ошибок

Этот режим является аналогом chkdsk C: /f. Он блокирует том на время работы, поэтому для системного диска потребуется перезагрузка.

Repair-Volume -DriveLetter C -OfflineScanAndFix

❗️ Важно: Если вы запускаете эту команду для системного диска (C:), PowerShell запланирует проверку при следующей загрузке системы. Чтобы запустить её немедленно, перезагрузите компьютер.

Пример: Автоматически проверить и исправить все тома, состояние которых отлично от Healthy.

Get-Volume | Where-Object {$_.HealthStatus -ne 'Healthy'} | ForEach-Object { Write-Host "Repairing volume $($_.DriveLetter)..." Repair-Volume -DriveLetter $_.DriveLetter -OfflineScanAndFix }


Шаг 3: Глубокая диагностика и S.M.A.R.T.

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

Анализ системных журналов

Ошибки дисковой подсистемы часто фиксируются в системном журнале Windows.

Get-WinEvent -LogName System | Where-Object {$_.Message -like "*disk*"} | Select-Object -First 20

Для более точного поиска можно фильтровать по источнику события:

Get-WinEvent -ProviderName 'Microsoft-Windows-DiskDiagnostic' -MaxEvents 10

Проверка статуса S.M.A.R.T.

S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) — технология самодиагностики дисков. PowerShell позволяет получить эти данные.

Способ 1: Использование WMI (для совместимости)

Get-WmiObject -Namespace "root\wmi" -Class MSStorageDriver_FailurePredictStatus

Если PredictFailure = True, диск предсказывает скорый сбой. Это сигнал к немедленной замене.

Способ 2: Современный подход через CIM и Storage-модули

Более современный и подробный способ — использовать командлет Get-StorageReliabilityCounter.

Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object PhysicalDisk, Wear, Temperature, ReadErrorsTotal, WriteErrorsTotal

Этот командлет предоставляет ценную информацию, такую как износ (актуально для SSD), температуру и количество ошибок чтения/записи.


Практические сценарии для системного администратора

Вот несколько готовых примеров для повседневных задач.

1. Получить краткий отчет о здоровье всех физических дисков.

Get-PhysicalDisk | Format-Table DeviceID, FriendlyName, MediaType, HealthStatus, OperationalStatus

2. Создать CSV-отчет о свободном месте на всех томах.

Диагностика и восстановление дисков с помощью PowerShell Powershell, Инструкция, Администрирование, Диагностика, IT, Длиннопост

3. Найти все разделы на конкретном диске (например, диске 0).

Get-Partition -DiskNumber 0

4. Запустить диагностику системного диска с последующей перезагрузкой.

Repair-Volume -DriveLetter C -OfflineScanAndFix Restart-Computer -Force

Полезно? Подпишись.

Удачи!

UPD:

Встречайте серию:

Философия PowerShell.

Показать полностью 1
[моё] Powershell Инструкция Администрирование Диагностика IT Длиннопост
14
9
AlbaViatorem
4 месяца назад

СКБ-Контур: Дерьмодемон от мира ЭДО...⁠⁠

Привет, пикабушники! Хочу поделиться историей, которая, возможно, спасёт ваши нервы и кошельки. Речь о компании «СКБ-Контур» и их сервисе «Диадок» для электронного документооборота (ЭДО). Если вы думаете подключиться к ним или уже работаете — читайте внимательно. Спойлер: это ад в формате SaaS.

Небольшое отступление, преамбула, так сказать, для пояснения моих действий.

Моя компания занимается производством товаров и сотрудничает со многими торговыми сетями. Я, как сотрудник IT отдела, веду в компании все направления электронного документооборота (ЭДО). До моего прихода из за сложностей взаимодействия с контрагентами было заключено аж три договора с разными провайдерами ЭДО, у каждого список контрагентов свой. Какое горение от количества условностей, правил ведения ЭДО и удобства от каждого провайдера ЭДО появлялось у бухгалтерии и других пользователей ЭДО вслух проговаривать даже не буду. В общем принято решение найти универсального провайдера ЭДО с поддержкой EDI по всем интересующим нас торговым сетям, чем я и занялся перелопачивая доступные компании. Ну а найдя подходящее предложение, соответственно, избавиться от остальных. И когда дело дошло до Контур Диадок стало весело...


Часть 1: Выбор провайдера

В части гибкости настроек, удобства пользования и полного охвата наших клиентов нам подошел Сбис (ООО "Компания "Тензор"), не реклама, просто дальше буду использовать юр. названия. Именно под наши бизнес-процессы подошел идеально. Когда я сообщил менеджеру СКБ Контур о намерении уйти меня пытались остановить, предлагая более выгодные условия. Но как говорится: Не верь трём вещам - клятве наркомана, слезам проститутки и словам менеджера по продажам.


Часть 2: Цены как у Rolls-Royce, сервис как у "Рога и копыта"

Стоимость. Контур — один из самых дорогих провайдеров. За что платим? За «удобный» интерфейс, который напоминает Windows 98. Да, может маленькой компании, где нет IT и сидят бухгалтера, которые готовы мириться с неудобством, лишь бы не на бумаге подойдёт и так. Но наша компания крупная и у нас есть свои требования к удобству и функциональности.

Интеграция с 1С. Многие компании в России используют 1С, у них почти монополия, аналогов приближенных к их функционалу нет, ну и конкурентов фирма 1с душит в зародыше. Хочешь жить - умей вертеться. Так вот о чем я, у нас 1см используется для учета и формирования всей документации и провайдеры ЭДО в нашем случае необходимы, как уполномоченные ФНС почтальоны наших документов. Соответственно , чтобы "почта" приходила сразу в нужный ящик надо готовить автоматизацию. У СКБ контур тут особый подход. Хотите автоматизировать документооборот? Готовьте деньги! Коннектор — платный. API — платный. Даже описание API — платное. А потом они могут поменять параметры запросов, и снова: «Платите, жадюги!». Самостоятельно делать вам ничего не дадут, у СКБ Контур для этого есть отдел внедрения и дело даже не в деньгах, а во времени и качестве работы этих навязанных аутсорсеров, а также в необходимости предоставления доступа к 1С, которая имеет свои доработки коммерческого характера. Итог: Вы либо платите, либо тратите месяцы на переписку. А контрагенты тем временем уходят к тем, кто не заставляет их играть в квест.

EDI с сетями. СКБ Контур обещают «широкий охват», но половину контрагентов подключить не могут. Придётся брать ещё одного провайдера. Итог: двойная оплата и головная боль. Так и случилось еще до моего прихода на нынешнее место работы, о чем я писал выше.


Часть 3: Поддержка? «Настройте всё сами! (Но только если вы наш программист)»

Отдел продаж. Общаются как королевские особы: «Это не наши проблемы», «Это вне нашей зоны ответственности», «Обратитесь в техподдержку». Хотя по договору они обязаны помогать. И я могу понять, обычный менеджер не шарит за технические вопросы, а те которые любят свою работу и погружаются в специфику, ну что ж таких я видел всего пару раз и у СКБ Контур их нет. Так что нам попадаются пародии на специалистов, продажники до мозга костей, которым надо продать вам, а не помочь вам.

Техподдержка. Работает по шаблону:

  1. Скинуть ссылку на инструкцию 2010 года.

  2. Предложить «настроить ящик» (который вы хотите удалить). Об этом дальше

  3. Замолчать, когда вы спрашиваете про законодательство.

На прямой вопрос, например: «Почему нельзя скрыть аккаунт?» — отвечают: «Такого функционала нет. Можем зарегистрировать ваше пожелание». Спойлер: эти «пожелания» висят в воздухе годами.


Часть 4: Игра в монополию

СКБ Контур намеренно блокирует интеграцию с другими EDI-платформами. Почему? Боятся, что клиенты уйдут к конкурентам. Цитата из диалога с менеджером:

«Это технически сложная интеграция и она находится в разработке."

Большего бреда я не слышал, почему у других провайдеров даже при наличии специфических описаний документов, даже при разном систаксисе структуры это удается, а у СКБ Контур нет?

Мы не могли настроить EDI c контрагентом другого провайдера и когда перешли в Тензор случилось тоже самое. Из-за "эксклюзивности" своего клиента, с которым мы хотели перенастроить ЭДО в роуминг через нашего нового провайдера СКБ Контур не мог настроить "технически сложный роуминг EDI".


Часть 5: "Мы вас удалим... или нет?"

В общем, вернемся к началу - работа по поиску подходящего провайдера ЭДО завершена, настройки выполнены интеграция создана и на другие провайдеры ЭДО уже не нужны, можно расторгать договоры. Казалось бы, что сложного? Отправил в СКБ Контур запрос на удаление аккаунта. Ответ техподдержки:

«Удалить ящик нельзя — там хранятся юридически значимые документы (ЮЗДО)!»

Но я-то знаю, что ЮЗДО в их системе вообще не использовали. Документы для обмена у СКБ были только EDI. Приняв решение, я готовлю претензию, отдаю на подпись и отправляю в СКБ Конур. Мы не получаем документы, мы получаем проблемы. Не смотря на отсуствие ЭДО многие контрагенты шлют нам приглашения именно в Диадок (СКБ Контур), просто потому что видят наш активный аккаунт.

Нас часто спрашивают: «Почему вы не отвечаете на приглашения в Диадоке?»
А всё потому, что мы уже ушли от Контура, но наш ящик там висит как призрак.

Контрагенты:

  1. Ищут нас через «Диадок» (ведь он у многих по умолчанию).

  2. Шлют приглашения туда.

  3. Ждут ответа неделями, а потом звонят в ярости: «Вы что, обанкротились?»

Контур:
— «Просто попросите контрагентов не искать вас у нас!»
— «Или заплатите за маршрутизацию документов между провайдерами» (спасибо, что не за воздух).

По факту: ваш бизнес теряет контракты, потому что Контур не хочет убирать вас из поиска. Их логика: «А вдруг вернётесь? А мы вас подстрахуем... за ваш счёт».

Совет от «Контура»? «Заблокируйте всех контрагентов и отключите сотрудников».

Контур позиционирует себя как «удобную платформу для всего». На деле:

  • EDI с сетями? Подключите ещё одного провайдера — наш не тянет.

  • Синхронизация с 1С? 15 тыс. рублей в год за коннектор + 10 тыс. за обновление.

  • Скрыть ящик? Нельзя — «это нарушит целостность данных» (читай: «мы потеряем рычаг давления»).

  • Потеря времени: Объясняете контрагентам, что вы «не в Контуре», хотя он говорит обратное.

  • Потеря репутации: Партнёры думают, что вы игнорируете их, а вы просто не можете достучаться до поддержки.

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

По сути, вас держат в заложниках. Хотите гибкости? Платите за их «уникальные» решения, которые на деле — костыли. Из ответа на претензию с требования удалить или скрыть наш ящик в Диадок я ничего не понял. СКБ Контур пишет, что мол у нас первых такая проблема, тех возможностей нет удалить/скрыть нас нет. Примем пожелание в разработку, дата разработки неизвестна, то есть открыто послали в пешее эротическое.

Сейчас с их ответом дал жалобы в ФНС, ФАС и любимый всеми Роскомнадзор. Жду ответ и по получении добавлю все остальные документы и скрины. Пост написал чуть заранее, так как вопрос еще не закрыт. Но надеюсь до многих дойдет людоедская политика данного провайдера и компании сделают свой вывод.

Показать полностью
[моё] Скб контур Контур ЭДО Администрирование Надоело Нервы Жадность Бесит Длиннопост
14
59
babisla61
babisla61
5 месяцев назад
Лига Юристов

Административное. Регистрация Лиги юристов в РКН - №5393520083⁠⁠

Заявление о регистрации в реестре РКН № 5393520083

Лига юристов Администрирование Текст Роскомнадзор
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии