Есть ли способ узнать, какой пользователь запускает какое приложение на сервере, используя Powershell - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь найти способ выяснить, кто запускал приложение (например, SQL) на сервере, просто чтобы получить представление.

Я пробовал Get-Process, но это не даетмне историческую информацию, я хочу получить историческую информацию

Get-Process -IncludeUserName *

что я хочу, чтобы возвращаемый результат был «имя приложения», «пользователь, который его запустил» и последнийdatetime был запущен этим пользователем '

1 Ответ

0 голосов
/ 24 мая 2019

Что касается ...

Я пытаюсь найти способ узнать, кто запустил приложение (для пример SQL) на сервере, просто чтобы получить представление.

То, что вы просите здесь, - это измерение программного обеспечения. SQL - это сервис, который всегда запускается после его установки, поэтому ни один отдельный пользователь никогда не будет его запускать. Это плохой пример. Например, MS Word будет лучшим примером.

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

Что касается ...

Я пробовал Get-Process, но это не дает мне историческую информацию, я хочу получить историческую информацию

Это не то, чем является процесс, ни для чего предназначен Get-Process. Это, Get-Process только проверяет и выводит список того, какой процесс выполняется в данный момент, независимо от того, кто / кто его запустил.

Что касается ...

что я хочу, чтобы возвращаемый результат был "имя приложения", "пользователь, который запускал it "и последний раз, когда он был запущен этим пользователем"

Пока процесс запущен, вы можете получить его с помощью этого командлета. Тем не менее, что вы пытаетесь достичь этим?

Опять же, существуют специальные инструменты для измерения использования программного обеспечения. https://docs.microsoft.com/en-us/sccm/apps/deploy-use/monitor-app-usage-with-software-metering

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

Get-Process -IncludeUserName | Где ProcessName -EQ 'Winword'

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

Использование PowerShell для создания и использования нового журнала событий

New-EventLog -LogName ScriptingGuys -Source scripts

Когда команда выполняется, на консоли Windows PowerShell не отображаются выходные данные. Чтобы команда действительно создала новый журнал событий, я использую командлет Get-EventLog с параметром –List. Вот команда и связанный вывод.

Write-EventLog -LogName ScriptingGuys -Source scripts -Message “Dude, it works … COOL!” -EventId 0 -EntryType information

или просто в файл

Get-Process -IncludeUserName | 
Where ProcessName -EQ 'Winword' | 
Select-Object -Property Name, StartTime, Username | 
Export-Csv -Path 'F:\Temp\AppLaunchLog.csv' -Append

Import-Csv -Path 'F:\Temp\AppLaunchLog.csv'

# Results

Name    StartTime            UserName   
----    ---------            --------   
WINWORD 5/23/2019 9:02:53 PM WS01\LabUser001
...