• Как добавить имя пользователя в скрипт PS в шедулере?

    @FluffyBeaver
    brar,
    это же не тот код, который выполняется?
    Там же $env:username поставляется в текст какой-то?
    Я бы с проверки этого начал.
    Написано
  • Как исправить исчезновение/сбивание принтеров в перемещаемых профилях?

    @FluffyBeaver
    mrkotovsk1, мне кажется, реализовать подключение и назначение по умолчанию с помощью групповых политик куда проще, чем изучать все особенности работы принтеров с перемещаемыми профилями.
    Насчет лучшего решения - зависит от деталей задачи.
    У нас, например, перешли на скрипты с групповых политик, так как это принесло нам некоторые плюсы и доп. возможности.
    Но в большинстве случаев - групповых политик достаточно.
    Написано
  • Как исправить исчезновение/сбивание принтеров в перемещаемых профилях?

    @FluffyBeaver
    mrkotovsk1, мне кажется, тут можно двигаться всего в двух направлениях:
    1. Пользователи себе сами подключают принтеры - надо "дожать" административно, чтобы подключали каждый раз сами, если вдруг отвалится.
    2. Придумать правила, по которым пользователи соотносится
      с принтерами и подкачать их с помощью групповых политик или скриптов.


    Часть параметров пожкдюченных принтеров храниться в реестре, в HKEY_LOCAL_MACHINE, насколько я помню, поэтому без автоматизации подключения принтеров проблему не решить как минимум для новых пользователей / новых машин.

    Кстати, я видел следующую ситуацию: пользователь подключается к ферме RDS, подключает принтер, оставляет сеанс на ночь - упром принтера по умолчанию не выбрано, хотя при подключении был указан.
    Стабильно вопросизводилась на разных узлах.

    Как по мне, лучше организовать процесс подключения принтеров, чем занимать изучением подобных особенностей.
    Написано
  • Как исправить исчезновение/сбивание принтеров в перемещаемых профилях?

    @FluffyBeaver
    mrkotovsk1,
    А почему не используются групповые политики?
    т.к много пользователей

    Что это значит?
    Написано
  • Как мониторить новые письма за определенный промежуток времени в почтовом ящике Exchange?

    @FluffyBeaver
    Сергей,
    Смотрите, если почта работает - значить письма ходят. Если не работает - не ходят.
    Мониторинг работоспособности электронной почты строится на проверке работоспособности компонентов электронной почты.
    Вот, пример выше от Роман Безруков, по сути, сводится к проверке работоспособности сервера Exchange - если сервер сигнализирует что что-то не так, надо его "лечить".

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

    если письмо на другой ящик в течении определённого времени не приходит - создаётся письмо с алерто

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

    Ещё говорят, что должна быть программа

    Ещё говорят, что политики должны быть честными, например.
    Программ, которые занимаются выемкой (т. е. получают письма и на основании содержимого выполняют действий) почты довольно много - CRM, help desk / service desk и т. д.
    Программ, которые используют выемку почты как способ мониторинга работоспособности я не встречал.
    Да и кому они могут понадобится? Если почта работает - это не значит, что кто-то будет писать письма...
    Написано
  • Как мониторить новые письма за определенный промежуток времени в почтовом ящике Exchange?

    @FluffyBeaver
    Сергей,
    Если любопытно, PRTG мониторит Exchange с помощью Powershell и WMI в том числе.
    Можно покопаться у них на форуме, а что-то они и на GitHub выкладывают.

    Но это, скорее, для саморазвития пригодится, потому что в условиях данной задачи (админ Exchange говорит, что мониторинг настроен) получается получается классический вопрос - "Quis custodiet ipsos custodes?"
    Нужен инструмент, который контролирует, работает ли почта? А кто контролирует, работает ли инструмент, который контроллирует?

    В концепции электронной почты весьма конкретно определена зона ответственности.
    На чем основаны сомнения, что почта будет приходить? - Получив ответ на этот вопрос можно будет скорректировать задачу, чтобы она стала "решаемой".
    Написано
  • Как копировать папку по smb только на включенные компьютеры?

    @FluffyBeaver
    Что значит "пока не работает"?
    Там же вряд ли написано "Подождите, скрипт заработает попозже"?
    В сообщении об ошибке обычно полезная информация.

    Что такое $comp?
    Сейчас, получается, проверяется доступность некого $comp, после чего выполняются действия с компьютерами независимо от их доступности. А надо сначала получить список всех интересующих узлов, а потом проверять их доступность.

    Кстати, выше MaxKozlov давал совет насчёт Invoke- Command...
    Написано
  • Как копировать папку по smb только на включенные компьютеры?

    @FluffyBeaver
    shell_guy,
    Кстати, насчет проверки установлен уже zabbix или ещё нет:
    В Windows 10/Server 2019 точно (в 8-не проверял, но вроде тоже можно) проверить наличие и удалить программу можно с помощью Get-Package / Uninstall-Package.

    Для пример - установка 1С, если ещё не установлена:
    $InstalledPackage = Get-Package -Name "1C:Предприятие 8*" -RequiredVersion $PlatformVersion -ErrorAction SilentlyContinue
        if ($InstalledPackage) {
            ##TODO Уже установлена
            Write-Host $PlatformVersion 'уже установлена.'
        }
        else {
            Write-Host 'Запускаем установку версии' $PlatformVersion
            Start-Process -FilePath 'C:\windows\system32\msiexec.exe' -ArgumentList $ArgumentsArray -Wait
            Write-Host 'Установили версию' $PlatformVersion -ForegroundColor Green
        }
    Написано
  • Как копировать папку по smb только на включенные компьютеры?

    @FluffyBeaver
    shell_guy,
    И тогда будет как-то так:

    Import-Module -Name 'ActiveDirectory'
    
    $LogFilePath = 'ййй'
    
    Get-ADComputer -Filter * | ForEach-Object -Process {
        if ((Test-NetConnection -ComputerName $PSItem.DnsHostname).PingSucceeded) {
            Write-ScriptLog -Message "Узел $($PSItem.DnsHostname) доступен" -Level 'Info' -Path $LogFilePath
            ## Действия на случай доступности узла.
        }
        else {
            Write-ScriptLog -Message "Узел $($PSItem.DnsHostname) НЕдоступен" -Level 'Warn' -Path $LogFilePath
            ## Действия на случай недоступности узла.
    
        }
    }
    Написано
  • Как копировать папку по smb только на включенные компьютеры?

    @FluffyBeaver
    shell_guy,
    записывать в лог можно с помощью Out-File или Set-Content.
    На основании этих командлетов куда написанных функций для логирования.
    Вот, например, одна из них.
    Написано
  • Как скопировать только новые или измененные файлы/папки за последний час в Powershell?

    @FluffyBeaver
    Андрей Стрелков, так при копировании файла надо ещё и структуру каталогов создавать?
    Одного Copy-Item для этого будет недостаточно, скорее всего. Он для копирования элементов (Item), а синхронизация - задача того, кто пишет код.
    Тут варианта два:
    • мало срок (одна) - "мало" синхронизации;
    • полноценная синхронизация, но много строк.


    А дальше надо смотреть, какая задача стоит.
    Вот, например, двухсторонняя синхронизация папок.
    И robocopy все ещё на месте (хотя, уже и не PowerShell).
    Написано
  • Как скопировать только новые или измененные файлы/папки за последний час в Powershell?

    @FluffyBeaver
    Андрей Стрелков, то есть, при изменении файла в папке, надо копировать всю папку, даже те файлы, которые не изменились?
    Или, как понимать
    папки в которых находится этот файл также нужно копировать

    вместе с
    нужно копировать только файлы изменившиеся

    ?
    Написано
  • Как в PowerShell бросить исключение, если вывод предыдущей команды не совпадает с регулярным выражением?

    @FluffyBeaver
    WindBridges, я подержу сергей кузьмин - написать нормальный скрипт (если есть условия его применения, конечно) проще, чем извращаться с однострочниками.

    Вот, одна строка:
    Get-ADComputer -Filter {Name -like "XXXXX*"} | %{Disable-SCVMHost -VMHost $(Get-SCVMHost -VMMServer $SCVMMName -ComputerName $_.Name) -MoveWithinCluster; Restart-Computer -ComputerName $_.Name -Wait; Enable-SCVMHost -VMHost $(Get-SCVMHost -VMMServer $SCVMMName -ComputerName $_.Name)}

    Это было решение для ситуации "...пускай они все перезагрузятся, а я пока пойду поужинаю, а то там уже остывает все...". То есть, торопясь вбить в консоль и забыть - самое то.
    Но если к этому придется возвращаться, куда удобнее сразу писать "нормально".

    Касательно вопроса - для примера:
    if (-not(Invoke-Expression 'cmd /C "echo 15"' | Select-String -Pattern "15")){throw 'все пропало!'}
    if (-not(Invoke-Expression 'cmd /C "echo 15"' | Select-String -Pattern "PHP 7.4")){throw 'все пропало!'}

    Вот только это, скажем так, сомнительный способ проверять наличие софта на машине...

    P.S. - Кстати, "выбросить исключение" предполагает, что следующая строка скрипта не будет выполняться , что противоречит концепции скрипта из набора однострочников.
    Написано
  • Как с помощью powershell ИНТЕРАКТИВНО запустить mstsc.exe на удаленном сервере?

    @FluffyBeaver
    VITYA-XY1, с наивысшим приоритетом тут как раз и не подойдет, наверное. Доберусь до компьютера - проверю из любопытства. Но тут другой момент...
    Да и вообще, получить что-то "до того, как он войдет на сервер" - это как?
    Если пользователь ещё не вошел, значит и сделать в его сессии ничего нельзя.
    То есть, надо войти вместо пользователя? Или он входит раньше, но потом отключается?

    В первом случае - автозагрузка или logon-скрипт, как уже упоминали, который будет учитывать внешнее условие или - кто-то же как-то вошел вместо пользователя, может он и mstsc запустит заодно?

    Во втором случае - кроме Планировщика мне больше в голову ничего не приходит.

    Ну и повторюсь, звучит все это так, как будто сделать на самом деле надо что-то другое.
    RDP внутри RDP, которое запускается до того, как пользователь вошел? Может быть RDP от пользователя надо динамически направлять на разные узлы на этапе подключения?
    Или там окошко не на весь экран? Почему тогда не RemoteApp, например?

    И по существу задачи вопрос (если это клиенту надо - ответ на этот вопрос уже был в "ТЗ") - это бинарное условие, разрешаемое строго до "входа" пользователя или возможны ещё вариации? То есть, когда пользователю надо будет "войти", у него уже или будет окно RDP, или не будет окна? Или окно может появиться уже в процессе его работы?
    Написано
  • Как с помощью powershell ИНТЕРАКТИВНО запустить mstsc.exe на удаленном сервере?

    @FluffyBeaver
    VITYA-XY1, а заказчику вот прям в таком виде надо?
    Просто это похоже на очередную задачу "про x -> y -> z".
    Написано
  • Как с помощью powershell ИНТЕРАКТИВНО запустить mstsc.exe на удаленном сервере?

    @FluffyBeaver
    VITYA-XY1, настройки безопасности какие у задачи? Скорее всего, дело в них.
    Написано
  • Как с помощью powershell ИНТЕРАКТИВНО запустить mstsc.exe на удаленном сервере?

    @FluffyBeaver
    VITYA-XY1, а зачем это нужно, если не секрет?
    Я, честно говоря, сомневаюсь, что это вообще возможно.
    И не могу представить, какая от этого может быть польза.
    Написано
  • Как с помощью powershell ИНТЕРАКТИВНО запустить mstsc.exe на удаленном сервере?

    @FluffyBeaver
    Три раза прочитал, но не понял, ни в чем проблема, ни, собственно, что надо сделать.
    В вопросе про cmd, в описании про rdp... В общем, не понятно.
    Написано
  • Как получить порядковый номер приложения в панели задач(win 10)?

    @FluffyBeaver
    То есть, справа от chrome может быть любое приложение в разные моменты времени?
    Написано