• Как вывести результат Invoke-SQLcmd на форму gui Powershell?

    @MaxKozlov Куратор тега PowerShell
    soulyaris, Если бы вы хоть код свой привели, было бы проще хоть что-то посоветовать.
    А сейчас тут обсуждается сферический конь в вакууме
    Но даже сейчас я вам могу предложить почитать
    https://learn-powershell.net/2017/05/09/powershell...
    Ответ написан
    Комментировать
  • Если PowerShell разработали как современную замену CMD, почему в меню восстановления Windows ещё вызывается CMD?

    @res2001
    Developer, ex-admin
    Видимо потому что powershell использует .Net, а это вещь довольно тяжелая и тянуть ее в систему восстановления смысла нет.
    Ответ написан
    Комментировать
  • Отладка под Visual Studio Code?

    @MaxKozlov Куратор тега PowerShell
    у меня в дефолтной конфигурации (1.47.3, в юзерской папке) проблем нет.
    settings.json есть ? там всё дефолтное или какие-то дополнения ?

    проверял на простейшем файлике
    if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
     "I'm Admin"
    }
    else {
      "Im NOT"
    }
    Ответ написан
    6 комментариев
  • Каким будет аналог команды "ls -C"?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Это просто форматирование вывода ls, ни на что по сути не влияет. Можно опустить.
    https://www.man7.org/linux/man-pages/man1/ls.1.html
    Ответ написан
    Комментировать
  • Нормальная windows 10. Миф или реальность?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Я считаю 10-ку худшей системой всех времён и народов, а людей, которые используют и советуют Windows 10 можно назвать либо пропагандистами, которые на зарплате у Microsoft, либо это просто ребята с приветом (вас больше), потому что эту "Г" даже нормальной не назвать. Но увы я вынуждена переходить на неё из-за NVidia.
    Вы конечно извините - но это просто бред и вкусовщина.
    Я прекрасно пользуюсь и Windows 7, и Windows 8 и Windows 10. Кое где даже еще XP прекрасно работает.
    Все системы отличные, все имеют свои достоинства и недостатки. Десятка посвежее поэтому все новые фишки на ней.
    Да там есть такая проблема как излишняя самостоятельность системы - но с этим научились бороться, в идеале если хочется стабильности есть LTSC версия.

    Наверное, обновления - это главная проблема 10
    Да это проблема, но какая ОС без проблем? К тому же проблема решаемая.
    Наглое использование трафика тоже решается, если еще и роутер настроить - мышь без спросу не проскочит.

    Что отправляет? Куда отправляет?
    Это проблема не Windows 10 а всего современного софта. Весь софт - и графические редакторы и простенькие утилиты для бэкапа лезут в сеть сливают какую-то информацию, качают обновления и все это без спроса. Особенно браузеры - это вообще жуть. ОС на их фоне выглядит довольно скромно в этом плане!

    Поэтому я ищу какую-нибудь сборку или твики где:
    Если хотите чтобы работало нормально - никаких левых сборок! Только оригинальные дистрибутивы. Если цена не смущает - берите LTSC.
    Если не покупаете - тем более LTSC.
    Там гораздо меньше обновлений, они легко настраиваются и не ставятся без спроса. И нет ничего лишнего.
    Ответ написан
    Комментировать
  • Почему Power Shell не видит функцию?

    @MaxKozlov Куратор тега PowerShell
    Всё по той же причине - Job - это отдельный процесс, он не знает о ваших функциях.
    Возможны три варианта:
    1. функцию надо разместить прямо внутри вашего скриптблока
    2. функцию надо выносить в модуль
    3. использовать альтернативу - PoshRSJob, которому можно указать какие функции импортировать
    Ответ написан
    Комментировать
  • Вызов функции с параметром по-умолчанию?

    @MaxKozlov Куратор тега PowerShell
    Для этих целей лучше использовать не формирование в виде строки, а так называемый Splatting
    $params = @{
      Param1 = "value1"
    }
    if ($something) { $params.Param2 = "*value" }
    
    MyFunction @params


    тогда в зависимости от сформированных в хеше параметров вызовется всё что надо

    Свичи прекрасно привязываются в стиле Start-Process -Wait:$isWait
    Вообще, все значения параметров можно передавать не через пробел, а через двоеточие, именно так их формирует splatting.

    А еще внутри функции есть автоматическая переменная $PSBoundParameters в которй лежит хеш переданных параметров и их значений и оттуда можно узнать, передан ли параметр явно или получил значение по-умолчанию (проверив, есть ли ключ)
    Или можно делать прокси-функции типа
    Function Get-OtherCompProcess {
    Param(
    #здесь все обычные параметры для get-process кроме computername
    )}
    $PSBoundParameters.computername='othercomp'
    Get-Process @PSBoundParameters
    Ответ написан
    5 комментариев
  • Скрипт добавления address с переменной?

    За Вас написать скрипт powershell? Так это не сюда, это на фриланс.
    Кратко: если известно заранее IP всех микротиков, и известно какую команду для каждого дать, и они поддаются какому-либо правилу (ну, как привели в примере, одна цифра меняется в IP адресе), то всё просто - делаем табличку в excel/libreoffice, в одном столбце ip устройства, во втором что прописать, ну и если ещё что-то меняется то и другие параметры можно прописать в разных столбцах. Экспортируем в csv файл. Пишем скрипт, который в цикле проходит все строки из файла, разбивает по переменным, и подсовывает их в команду, ну ещё неплохо бы проверять доступность устройства, и логировать, что корректно сработало, что нет. Всё.
    Если очень много устройств, и они могут быть не всегда включены, то можно в табличку ещё ввести параметр, который показывает, что уже это устройство обработано успешно. А дальше скрипт по завершению сделает новый такой же csv файл, и подменит исходный, и при следующем запуске будет обрабатывать только те устройства, которые не были обработаны. Периодически запуская скрипт, можно со временем выловить все устройства. Но если они всегда все доступны, то это всё не надо, достаточно раз запустить и проверить потом результат.
    Ответ написан
    Комментировать
  • Добавление пользователей скриптом в группу в Exchange Online?

    @zloy_zaya
    А вы уверены что соединение успешно установлено?
    И вы упустили import-pssession $session -allowclobber
    Ответ написан
    1 комментарий
  • Генерация случайного списка в Powershell?

    $ComputerList = "PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10"
    $AllComputer = $computerList.Split(",")
    Write-Host -ForegroundColor Magenta "Количество компьютеров:" $AllComputer.Length
    $newList = @()
    # for ($i =0; $i -eq 4; $i++) { "-eq" - условие выполнения содержимого цикла, у вас оно не выполняется, т.к. "0=4" - Ложь
    for ($i =0; $i -le 4; $i++) {
    $index = Get-Random -Maximum $AllComputer.Length
    # $newList[$i] = $ComputerList[$index] - добавление в список по несуществующему индексу (изначально список пуст), $ComputerList - не список а строка, которую Вы преобразуете в список (строка 2) и складываете в переменную $AllComputer
    $newList += $AllComputer[$index]
    }
    Write-Host -ForegroundColor Green "Количество новых компьютеров:" $newList.Length
    Write-Host -ForegroundColor Red "Список новых компьютеров:" $newList
    Ответ написан
    1 комментарий
  • Как при помощи Powershell отправить файл своему боту в Telegram Bot API?

    @MaxKozlov Куратор тега PowerShell
    у Windows Powershell нет прямой поддержки 'multipart/form-data', только у Core

    В частности для multipart не хватает указания bondary в ContentType
    Можете попробовать поэкспериментировать с ручной сборкой типа как тут @jklemmack
    https://stackoverflow.com/questions/36268925/power...
    или с System.Net.Http.MultipartFormDataContent
    Ответ написан
    6 комментариев
  • Как в микротике создать site to site между микротиками ipsec в тунельном режиме?

    CityCat4
    @CityCat4 Куратор тега Сетевое администрирование
    Внимание! Изменился адрес почты!
    различие...İpsec а в транспортном и туннельном режиме

    Это в гугл.

    Порядок создания опишу завтра - если кто-то другой не напишет раньше :)

    Берем простейший случай - аутентификация по PSK (Pre-Shared Keys, то бишь простому текстовому паролю). Текст пароля "123456" (понятно, что если реализовывать такой вариант, пароль должен быть посерьезней)

    Внешние интерфейсы, смотрящие в тырнет:
    система А - 170.70.70.1
    система Б - 180.80.80.1
    (обязательно поменяйте их на свои!)

    Внутренние интерфейсы, смотрящие в спариваемые локалки:
    система А - 10.1.1.1
    система Б - 10.2.2.1
    маски у обеих сетей - /24 (255.255.255.0)

    итак погнали.

    RouterOS 6.45.7
    значения по умолчанию не указываются
    Система А (на системе Б будет все тоже, только перевернуто зеркально)

    Шаг 0 - создаем предложение
    Этот шаг необязательный
    /ip ipsec proposal
    add auth-algorithms="" enc-algorithms=aes-256-gcm lifetime=1h name=proposal1

    Самое первое - создаем proposal. Это наше предложение другой стороне о том, какие мы поддерживаем шифры и какие методы подписи пакетов. Выбираем самое сильное шифрование AES256 со счетчиком Галуа, отдельная подпись пакета не потребуется. Здесь же мы задали время жизни туннеля до неполного переустановления - 1 час.
    Этот шаг необязательный, он нужен только для усиления защиты туннеля. Без него будет набор из более простых шифров типа AES128 CBC с SHA1 в качестве алгоритма подписи пакета

    Шаг 1 - создаем профиль соединения
    /ip ipsec profile
    add dpd-interval=disable-dpd enc-algorithm=aes-256 hash-algorithm=sha256 lifetime=2h name=profile1 \
        nat-traversal=no proposal-check=strict

    Отключаем DPD - от него только проблемы, устанавливаем более мощные чем по умолчанию алгоритмы шифрования и хэширования (default encrypt может быть и 3DES, default hash - SHA1), устанавливаем время жизни туннеля 2 часа (после - полная переустановка соединения со сбросом ключей шифрования), отключаем NAT Travesal, указываем обработку предложений strict (очень важный параметр! Если время жизни туннеля, запрошенное той стороной больше чем задано у нас - послать, если меньше или равно - принять)

    Шаг 2 - создаем напарника (данные об удаленной системе)
    /ip ipsec peer
    add address=170.70.70.1/32 comment="Main VPN" name=RB2011 profile=profile1

    Тут даже пояснять ничего не надо, все самоочевидно

    Шаг 3 - создаем политику
    /ip ipsec policy
    add dst-address=10.2.2.0/24 peer=RB2011 proposal=proposal1 src-address=10.1.1.0/24 tunnel=yes

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

    Шаг 4 - создаем идентификаторы (identity). Раньше в IPSec у микротика было меньше сущностей и обьяснение было проще...
    /ip ipsec identity
    add peer=RB2011 secret=123456


    Естественно возникает вопрос - а как же микротик узнает, куда девать пакеты? А это записано у него в настройках - все пакеты с сети 10.1.1.0/24 на 10.2.2.0/24 зашифровать и отправить на 170.70.70.1, все пакеты же с 170.70.70.1 протокола ESP нужно расшифровать и обработать повторно.
    Вообще для того, чтобы понять, как ходят пакеты в IPSec - есть отличная схема Packet Flow in Netfilter and General Networking
    Ответ написан
    2 комментария
  • Как получить список владельцев сайтов со всех сайтов с помощь Power Shell?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я бы озвучил проблемы.
    Ответ написан
    Комментировать
  • Как поменять Имя которое отображается в AD через PowerShell?

    @MaxKozlov Куратор тега PowerShell
    Rename-ADObject меняет атрибут CN - то есть то, что отображается в списке
    Соответственно и DistinguishedName
    а DisplayName (Выводимое имя) ставится Set-ADUser -DisplayName
    Если же нужно просто Имя, то это GivenName

    DistinguishedName : CN=Чебуракин Геннадий Шапоклякович,OU=SOME_OU,DC=forma,DC=com
    CN : Чебуракин Геннадий Шапоклякович
    DisplayName : Чебуракин Геннадий Шапоклякович
    Name : Чебуракин Геннадий Шапоклякович
    Surname : Чебуракин
    GivenName : Геннадий
    Ответ написан
    Комментировать
  • Проблема с WSL на Windows 10?

    fzfx
    @fzfx
    18,5 дм
    а разве в 1909 уже завезли wsl2? afaik нет. ждите версию 2003.
    Ответ написан
    1 комментарий
  • Как сохранить credential для winrm?

    semenenko88
    @semenenko88 Автор вопроса
    Системный администратор
    Разобрался!

    Чтобы не приходилось вводить каждый раз пароль, сохраним его в зашифрованном виде в файл:
    $crd = Get-Credential
    $crd.Password | ConvertFrom-SecureString | Set-Content pass.txt


    Используя имя пользователя и пароль из файла создадим Credential в переменной, и используя эту переменную подключимся к серверу:
    $user = ″domain\administrator″
    $password = Get-Content pass.txt | ConvertTo-SecureString
    $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $password
    Enter-PSSession -ComputerName 10.15.29.8 -Credential $cred
    Ответ написан
    Комментировать
  • Powershell: не работает foreach. Почему?

    @BeatHazard
    В строчке $adPath= "LDAP://" + $destinationOUs вы указали $destinationOUs эта переменная содержит весь массив OU, вам надо было указать $destinationOU
    Подобные проблемы легко можно обнаружить заменяя исполняемые команды более простыми, например Write-Host имя переменной, сразу все становится на свои места и понятно что откуда берется
    Ответ написан
    2 комментария