none
Запуск скрипта через политику (POWERSHELL) RRS feed

  • Вопрос

  • Добрый день, коллеги!

    Собственно такой вопрос, поставили задачу, написать скрипт, который будет брать файлик *msi, устанавливать его и писать в Application log на удаленный сервер результат установки. Скрипт я сделал, он простой:

    cls
    $core = "nsk-srv97.int.mechel.corp"
    $pc = $env:COMPUTERNAME
    New-EventLog –LogName Application –Source “Install Landesk Agent” -ComputerName $core -ErrorAction SilentlyContinue
    $agentservice = Get-Service -ErrorAction SilentlyContinue
    
    if ($agentservice.Name -like 'ISSUSER')
    {
        New-EventLog –LogName Application –Source “Install Landesk Agent” -ErrorAction SilentlyContinue
        Write-EventLog –LogName Application –Source “Install Landesk Agent” –EntryType Information –EventID 4002 `
        –Message “Обнаружен агент Landesk, установка не требуется” -ErrorAction SilentlyContinue
    }
    
    else {
            if ((Test-Path '\\nsk.ru\NETLOGON\GLB\LanDesk\STD_WKS_v1.msi') -eq $true)
            {
                Write-EventLog -ComputerName $core –LogName Application –Source “Install Landesk Agent” –EntryType Information –EventID 4000 `
                –Message “Выполняется установка агента на компьютер $($pc)” -ErrorAction SilentlyContinue
    
                try {
                        [System.Diagnostics.Process]::Start('\\nsk.ru\NETLOGON\GLB\LanDesk\STD_WKS_v1.msi')
                    }
    
                catch {Write-EventLog -ComputerName $core  –LogName Application –Source “Install Landesk Agent” –EntryType Information –EventID 4003 `
                –Message “Произошла ошибка при установке агента Landesk - компьютер $($pc)” -ErrorAction SilentlyContinue}
                
            }
    
            else {
                    Write-EventLog -ComputerName $core –LogName Application –Source “Install Landesk Agent” –EntryType Information –EventID 4001 `
                    –Message “Нет доступа к шаре с компьютера $($pc)” -ErrorAction SilentlyContinue
                 }
         }

    Все бы ничего, но данный скрипт нужно разливать на объекты типа компьютер, а это означает, что при применении политики, выполнение скрипта будет происходить от имени СИСТЕМА. Поэтому возникает вопрос, что добавить в скрипт, чтобы запись лога на удаленный сервер производилась, от другой учетной записи?

    Спасибо за любой ответ.



    • Изменено eclegolas 24 апреля 2019 г. 10:56 правка
    24 апреля 2019 г. 10:55

Ответы

  • Добрый день!

    Вектор, про invoke тоже задумывался, но в это случае пароль будет в открытом виде, прям в скрипте, что не секурно. Я задумывался ещё о таком варианте с зашифрованным текстовым файлом:

    $user = "nsk-test7"
    $password = Get-Content C:\Temp\password.txt | ConvertTo-SecureString
    $credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $password
    New-EventLog –LogName Application –Source “Install Landesk Agent” -ComputerName $core -ErrorAction SilentlyContinue

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

    Михаил, такой вариант не устраивает.

    простите что надолго пропал

    я вижу 2 варианта: ps2exe костыль позволяющий скрыть пароль или писание в лог локально и вычитывание этого лога с конечного сервера через отдельную процедуру (скрипт по расписанию) или нечто по типу snare агента


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа eclegolas 22 мая 2019 г. 14:57
    Модератор

Все ответы

  • invoke-command -computername <pc> -credentials <pscreds> -command { write-eventlog ... }

    The opinion expressed by me is not an official position of Microsoft

    24 апреля 2019 г. 11:39
    Модератор
  • Добрый день,

    Пользователь СИСТЕМА (SYSTEM) = учётная запись компа в домене, посмотрите как предоставить права на запись в лог удалённо:

    https://support.microsoft.com/en-us/help/2028427/writing-to-the-windows-event-log-from-an-asp-net-or-asp-application-fa

    Права на запись можно выдать группе Domain Computers, либо, более расширенно, даже Authenticated Users, если считаете что это не противоречит вашим правилам инфобезопасности.

    24 апреля 2019 г. 11:49
  • Добрый день!

    Вектор, про invoke тоже задумывался, но в это случае пароль будет в открытом виде, прям в скрипте, что не секурно. Я задумывался ещё о таком варианте с зашифрованным текстовым файлом:

    $user = "nsk-test7"
    $password = Get-Content C:\Temp\password.txt | ConvertTo-SecureString
    $credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $password
    New-EventLog LogName Application Source Install Landesk Agent -ComputerName $core -ErrorAction SilentlyContinue

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

    Михаил, такой вариант не устраивает.

    24 апреля 2019 г. 12:27
  • Добрый день!

    Вектор, про invoke тоже задумывался, но в это случае пароль будет в открытом виде, прям в скрипте, что не секурно. Я задумывался ещё о таком варианте с зашифрованным текстовым файлом:

    $user = "nsk-test7"
    $password = Get-Content C:\Temp\password.txt | ConvertTo-SecureString
    $credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $password
    New-EventLog –LogName Application –Source “Install Landesk Agent” -ComputerName $core -ErrorAction SilentlyContinue

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

    Михаил, такой вариант не устраивает.

    простите что надолго пропал

    я вижу 2 варианта: ps2exe костыль позволяющий скрыть пароль или писание в лог локально и вычитывание этого лога с конечного сервера через отдельную процедуру (скрипт по расписанию) или нечто по типу snare агента


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа eclegolas 22 мая 2019 г. 14:57
    Модератор