• Где ошибка в скрипте, устанавливающем время входа в систему в домене?

    @BeatHazard
    Вы так все усложнили...
    Назначаете вручную одному пользователю нужные вам интервалы, затем берете его как шаблон и распространяете на нужную вам группу, либо берете значение из этого шаблона и вставляете в свой скрипт
    Вот простенький скрипт, который делает то, что вам нужно:

    $templateuser='a.khramov'
    $templatehours= Get-ADUser -Identity $templateuser -properties logonHours
    Get-ADGroupmember "msk-VPN_Users" |foreach {Set-ADUSer $_.samaccountname -Replace @{logonHours = $templatehours.logonHours} }
    Ответ написан
    Комментировать
  • Выключение VM в кластере через powershell?

    @NortheR73
    системный инженер
    например, так:
    Get-ClusterGroup | where {$_.GroupType -eq "VirtualMachine" -and $_.State -eq "Online"} | Get-VM | Stop-VM
    Ответ написан
    4 комментария
  • Прописывать адрес вручную или резервировать со шлюза?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Плюс статики - если оборудование загрузится быстрее DHCP-сервера, то оно будет иметь нормальный IP.
    Плюс DHCP - централизованное управление адресами и выдача адресов всем устройствам без их ручной настройки.
    У себя прописываю статические IP на серверах и сетевых принтерах, DHCP с привязкой к MAC для стационарных десктопов, DHCP из пула для остальных.
    Ответ написан
    Комментировать
  • Как узнать дату последнего использования учётной записи в AD?

    @NortheR73
    системный инженер
    Вам нужен LastLogon

    LastLogon - атрибут обновляется только на том КД, который выполнил аутентификацию пользователя. Атрибут не реплицируется, т.е. надо обходить все контроллеры и спрашивать этот атрибут.
    LastLogonTimestamp - это реплицируемый вариант LastLogon, но он не совпадает с LastLogon. Логика следующая: из текущей даты вычитается значение LastLogonTimestamp (получаем значение d1), далее вычисляется значение d2 (14 минус случайный процент от 5). Если d1>d2 - происходит обновление значения LastLogonTimestamp, в противном случае все остается как есть.
    LastLogonDate - это вычисляемый атрибут, не реплицируется. По сути - значение LastLogonTimestamp, сконвертированное в удобный для пользователя вид

    Еще, как вариант, на контроллерах в Security Log смотреть события 4624
    Ответ написан
    3 комментария
  • Есть возможности выполнения команд powershell на удаленной винде из локального linux (bash)?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Да, есть возможность установить Powershell в linux и использовать winrm для удаленного запуска команд
    Ответ написан
    1 комментарий
  • Как массово удалить smtp адреса в ящиках Exchange?

    @NortheR73
    системный инженер
    PowerShell скрипт...
    со стороны Exchange - через Get-Mailbox получаете список ящиков, у любого ящика есть свойство EmailAddresses (массив адресов) - собственно, из него и удаляете лишние адреса. Ну и Set-Mailbox закрепляет новый набор адресов.
    со стороны Active Directory можно пошатать атрибут proxyAddresses с тем же результатом
    Ответ написан
    Комментировать
  • Как перезапустить конкретные сервисы linux через Ansible?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Потому что Ансибл при использовании модулей не пишет в терминале systemctl restart. У него все телодвижения происходят через врапперы, запускаемые местным питоном (см.).

    Кривая альтернатива - делать перезапуск не через systemd, а через shell/command. Тогда точечные правила в судоерс проканают.

    Почему бы не разрешить ансибловому пользователю запускать всё подряд через sudo без пароля? Главное, его SSH-ключ храните понадёжнее и всё.
    Ответ написан
    Комментировать
  • Как PowerShell информирует об окончании выполнения команды?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Я пишу программу на c#, которая должна работать с этим самым PowerShell через стандартные потоки ввода/вывода


    А зачем так сложно то? есть прямая интеграция PS в C#
    https://learn.microsoft.com/en-us/powershell/scrip...
    Ответ написан
    1 комментарий
  • Как из Python отдать команды в PowerShell от имени администратора?

    @BeatHazard
    Ну для начала команда должна выглядеть так:
    powershell -command "Start-Process "slmgr" -ArgumentList "/ipk W269N-WFGWX-YVC9B-4J6C9-T83GX" -Verb RunAs"

    Поправил
    Ответ написан
    1 комментарий
  • Exchange 2019 "IsExcludedFromProvisioningBySpaceMonitoring", где настроить пороговые значения для MDB?

    @NortheR73
    системный инженер
    IsExcludedFromProvisioningBySpaceMonitoring - параметр вычисляемый, напрямую его не установить

    Если правильно помню - во времена Exchange 2013 я правил эти значения в *.config файлах (например, EdgeTransport.exe.config) в папке $ExchangeInstallPath\Bin. Там явно было задано значение "20", и я менял его на "5" - это размер свободного места на диске в процентах от общего объема диска.
    В Exchange 2019 собственный мониторинг в плане управляемой доступности продвинулся вперед, и я не нашел аналогичные параметры в файлах *.config. Теперь предлагается менять данные параметры в реестре или через PowerShell (*-ServerHealth, *-GlobalMonitoringOverride и т.д.). Отвечает за это служба Microsoft Exchange Health Manager - после изменений ее надо рестартовать. Плюс посмотрите файлы *.config/*.xml/*.ini в папках $ExchangeInstallPath\Bin и $ExchangeInstallPath\Bin\Monitoring\Config на предмет подходящих настроек.

    Еще на почитать - Exchange Server storage configuration options
    Ответ написан
    Комментировать
  • Как дать роль администратора в Active DIrectory внутри отдельной OU?

    @WSGlebKavash
    Каждый объект в AD имеет собственную систему прав (ACL). OU являются частным случаем.
    Соответственно, есть функция делегировать управление OU.
    Простым языком
    Тут более подробно
    Здесь вариант через командную строку
    Интересная, но давольно старая статья.

    Так что, вполне решаемая задача.
    Ответ написан
    2 комментария
  • Как добавлять +1 в название файла при копировании в другую папку, если там уже есть файл с таким названием?

    @FluffyBeaver
    function Get-ResultFilePath {
        param (
            # Путь к файлу, который копируется
            [Parameter(Mandatory = $true)]
            [System.String]
            $SourcePath,
            # Путь к папке, в которую необходимо скопировать файл
            [Parameter(Mandatory = $true)]
            [System.String]
            $DestinationFolder
        )
    
        # Вариант 1
        $File = Get-Item -Path $SourcePath
        $DestinationPath = Join-Path -Path $DestinationFolder -ChildPath "$($File.BaseName)$($File.Extension)"
    
        $i = 1
        While (Test-Path -Path $DestinationPath) {
            $DestinationPath = Join-Path -Path $DestFolder -ChildPath ($File.BaseName, $File.Extension -join "($i)")
            $i++
        }
    
        # Вариант 2
        # $FileBaseName = [System.IO.Path]::GetFileNameWithoutExtension($SourcePath)
        # $FileExtension = [System.IO.Path]::GetExtension($SourcePath)
        # $DestinationPath = Join-Path -Path $DestinationFolder -ChildPath "$FileBaseName$FileExtension"
    
        # $i = 1
        # While (Test-Path -Path $DestinationPath) {
        #     $DestinationPath = Join-Path -Path $DestFolder -ChildPath ($FileBaseName, $FileExtension -join "($i)")
        #     $i++
        # }
    
        return $DestinationPath
    }
    
    $DestFolder = 'F:\tmp'
    $Path = 'C:\tmp\FileName.pdf'
    
    Copy-Item -Path $Path -Destination (Get-ResultFilePath -SourcePath $Path -DestinationFolder $DestFolder)
    Ответ написан
    4 комментария
  • Привязка пользователей к компьютерам в домене, которые на данный момент залогинены?

    @NortheR73
    системный инженер
    PowerShell в помощь...
    Set-ADUser -Identity $ADusername -LogonWorkstations $comparray
    $ADusername - пользователь, $comparray - компьютер или набор компьютеров

    Так-то все уже описано до нас...
    Ответ написан
    Комментировать
  • Синхронизация Windows 10 с NTP сервером по заданию?

    @kalapanga
    Если не ошибаюсь, то этой командой выполняется только настройка службы синхронизации времени.
    А принудительная синхронизация это w32tm /resync
    Ответ написан
    Комментировать
  • На основе чего генерируются чертеж?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Обычная алгебра с капелькой тригонометрии и какая-то библиотека для формирования PDF.
    Ответ написан
    Комментировать
  • Как пофиксить smtp почты на домене от mail.ru?

    @Drno
    В ошибках всё написано. Прочитайте и сделайте как там просят
    Ответ написан
  • Почему так популярны телеграм боты?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ботов писать относительно просто, порог вхождения минимальный по сравнению с программированием под iOS и андроид, да и проще написания десктопных приложений с GUI, а в использовании боты проще, чем утилиты командной строки.
    Зато в результате может получиться довольно функцинальная штука. Легко настроить многоэтапную диалоговую коммуникацию с пользователем, получить для обработки изображения и фото, возвращать ссылки на скачивание результатов.

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

    В общем все хотят всё и сразу, и чтоб легко, бесплано и не надо было учиться.
    Ответ написан
    Комментировать
  • Почему бесконечный цикл срабатывает несколько раз, прежде чем начаться снова?

    @NortheR73
    системный инженер
    Не понимаю необходимость бесконечного цикла.
    Теперь вывод информации отрабатывает три раза, а имя проверяемого пк спрашивает дважды
    потому что вы добавляете введенное имя компа в набор $ArrComputers, а потом дергаете каждый раз весь $ArrComputers через ForEach, т.е. первый ответ на первый ввод, второй и третий ответы - на второй ввод, т.к. в наборе уже два имени

    По скрипту вижу такие варианты:
    1. Если Вы хотите, чтобы скрипт постоянно висел и спрашивал имя компа (цикл While), тогда набор $ArrComputers и цикл ForEach не нужны, т.е. спросили имя - обработали запрос
    2. В переменную $ArrComputers имена компов можно передать через запятую, т.е.
    $ArrComputers = Read-Host("Введите имена компьютеров через запятую")

    Далее передаете $ArrComputers в параметре -ComputerName командлету Get-WmiObject и форматируете вывод как вам надо:
    $computerDrives = Get-WmiObject -Class MSFT_PhysicalDisk -Namespace "root\Microsoft\Windows\Storage" -ComputerName $ArrComputers | Format-Table (или Format-List) prop1,prop2...  
    $computerOS = get-wmiobject Win32_OperatingSystem -ComputerName $ArrComputers

    Цикл ForEach не нужен
    3. Убираем цикл While вообще. Набор $ArrComputers заполняем именами компов из какого-нибудь файла, далее обрабатываем их в цикле ForEach.
    Ответ написан
    5 комментариев
  • Как отредактировать csv файл с помощью powershell?

    @NortheR73
    системный инженер
    Думается мне, что как-то так должно быть:
    $Paths = Import-Csv -Path "C:\temp\OldFiles.csv" -Delimiter ';'
    $ToMove = "C:\temp\ToMove.csv"
    foreach  ($Row in $Paths)
    {
        $Path = $Row.FullName
        If ($Path.Substring(0,2) -eq "\\")  {$Newpath = ("\\?\D:\11111\To_Move" + $Path.Remove(0,12))}
        $Destpath = Split-Path $Newpath -Parent
        $Row | Add-Member -NotePropertyName "NewPath" -NotePropertyValue $DestPath
    }
    $Paths | Export-Csv -Force -Path $ToMove -Encoding UTF8 -Delimiter ";" -NoTypeInformation
    Ответ написан
    Комментировать
  • Сможет ли Ansible вот такое?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Большинство вещей - без проблем. Например, можно использовать таск authorized_keys для аккуратного прописывания ключа вместо ручного его закидывания на сервер. Есть таски для создания пользователей и групп, установки софта, копирования файлов и создания их по шаблону...

    Некоторые вещи можно делать косвенным путём, копируя и генерируя конфиги, запуская свои кастомные команды через таск shell, итд итп. Например, конфигурить sudo можно через создание файла с нужным содержимым в /etc/sudoers.d, не трогая основной конфиг.

    В общем, даже если останутся некоторые задачи, которые ansible не сможет автоматизировать достаточно хорошо, во всём остальном он очень сильно облегчит сопровождение серверов, особенно подготовку новых.
    Ответ написан
    Комментировать