Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法找到哪个用户使用Powershell在服务器上运行哪个应用程序_Powershell_Powershell 4.0 - Fatal编程技术网

有没有办法找到哪个用户使用Powershell在服务器上运行哪个应用程序

有没有办法找到哪个用户使用Powershell在服务器上运行哪个应用程序,powershell,powershell-4.0,Powershell,Powershell 4.0,我试图找到一种方法来找出谁在服务器上运行过应用程序(例如SQL),只是想了解一些情况 我尝试了获取过程,但这没有给我历史信息,我想获取历史信息 获取进程-IncludeUserName* 我想要返回的结果是“应用程序名称”、“运行它的用户”以及该用户上次运行它的日期时间“至于 我正在试图找到一种方法来找出谁运行了一个应用程序(例如 示例SQL),只是为了了解一些情况 您在这里要求的是软件计量。 SQL是一种安装后始终运行的服务,因此,任何用户都不会运行它。所以,这是一个坏例子。例如,Word女士

我试图找到一种方法来找出谁在服务器上运行过应用程序(例如SQL),只是想了解一些情况

我尝试了获取过程,但这没有给我历史信息,我想获取历史信息

获取进程-IncludeUserName*

我想要返回的结果是“应用程序名称”、“运行它的用户”以及该用户上次运行它的日期时间“

至于

我正在试图找到一种方法来找出谁运行了一个应用程序(例如 示例SQL),只是为了了解一些情况

您在这里要求的是软件计量。 SQL是一种安装后始终运行的服务,因此,任何用户都不会运行它。所以,这是一个坏例子。例如,Word女士就是一个更好的例子

然而,PowerShell中并没有实现这一功能的本机软件计量,但PowerShell当然可以查看事件日志。然而,如果您的审计设置不正确,那么它是没有意义的。对于软件计量工具来说,这是更好的选择,有几种方法。那么,为什么要尝试重新发明轮子呢

至于

我尝试了获取过程,但这并没有给我历史信息,我 想要获取历史信息吗

这不是过程,也不是Get过程的目的。它,Get Process只检查并列出当前正在运行的任何进程,而不管是什么/谁启动了它

至于

我想要的返回结果是“应用程序名”、“运行的用户” “它”和该用户的帐户上次运行它的日期时间

只要进程正在运行,您就可以使用该cmdlet获得此消息。 然而,你想通过这个来实现什么

同样,有专门构建的工具来衡量软件的使用。

如果您必须使用脚本重新发明这条道路,那么您需要在目标机器上安装一个任务监视程序,监视WinWord进程的出现

获取进程-IncludeUserName | 其中ProcessName-EQ“Winword”

。。。然后,每次看到该进程时,都将这些结果写入文件或数据库或您自己的事件日志

命令运行时,Windows PowerShell控制台不会显示任何输出。为了确保命令实际创建了一个新的事件日志,我使用 带有–List参数的Get-EventLog cmdlet。这是命令 以及相关的输出

或者只是一个文件

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

在事件日志上查找文档,然后检查可以在其中进行迭代的PS命令。默认情况下,我不认为日志记录已为此启用。如果是,您的安全审计日志将包含该信息,您可以使用
get winevent
[由于其速度快而推荐]或
get eventlog
来扫描这些信息。
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