PowerShell 脚本中的 运行 quser.exe 在 IDE 中有效,但在 运行 作为服务时无效
Running quser.exe in PowerShell scripts works in IDE but not when running as a service
如果我 运行 在控制台 window 或 ISE 中执行以下代码片段,它会按预期工作,列出本地计算机上的活动用户会话:
(Invoke-Expression "$env:windir\system32\quser.exe") -replace '\s{2,}', ',' | ConvertFrom-Csv
不幸的是,这不是控制台应用程序,而是作为服务安装的 PowerShell 脚本。服务 运行s 作为 LocalSystem(不是 LocalService)。当服务尝试 运行 此代码时,它会输出以下错误:
The term 'C:\Windows\system32\quser.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
我联系了 Sapien 支持并被告知 一项服务 运行 没有配置文件并且没有对系统文件夹的执行权限。您需要授予服务帐户对 exe 及其支持 DLL 的执行访问权限,并使用 EXE 的完整路径。
我已经证明(我认为)安全主体可以访问 quser。我使用 PSExen 打开 PowerShell 控制台 运行ning 作为 LocalSystem 并成功 运行 quser 应用程序:
问题必须是我 运行宁作为一项服务。有谁知道我如何 access/use QUser 在服务中?
我想真正的问题是,服务 运行 如何作为 LocalSystem 在系统文件夹中执行应用程序?
我的猜测是,无论您使用什么工具 运行 作为服务的 PowerShell 脚本都是 32 位的,并且 C:\Windows\SysWOW64
中没有 quser.exe
。
如果是这种情况,您可以通过 运行ning C:\Windows\Sysnative\quser.exe
在 64 位 OS 上解决此问题(请参阅文档中的 File System Redirector详情)。
如果是这样的话,我会说你得到的信息("service runs with no profile and does not have execution access to the system folders")根本不正确。
如果我 运行 在控制台 window 或 ISE 中执行以下代码片段,它会按预期工作,列出本地计算机上的活动用户会话:
(Invoke-Expression "$env:windir\system32\quser.exe") -replace '\s{2,}', ',' | ConvertFrom-Csv
不幸的是,这不是控制台应用程序,而是作为服务安装的 PowerShell 脚本。服务 运行s 作为 LocalSystem(不是 LocalService)。当服务尝试 运行 此代码时,它会输出以下错误:
The term 'C:\Windows\system32\quser.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
我联系了 Sapien 支持并被告知 一项服务 运行 没有配置文件并且没有对系统文件夹的执行权限。您需要授予服务帐户对 exe 及其支持 DLL 的执行访问权限,并使用 EXE 的完整路径。
我已经证明(我认为)安全主体可以访问 quser。我使用 PSExen 打开 PowerShell 控制台 运行ning 作为 LocalSystem 并成功 运行 quser 应用程序:
问题必须是我 运行宁作为一项服务。有谁知道我如何 access/use QUser 在服务中?
我想真正的问题是,服务 运行 如何作为 LocalSystem 在系统文件夹中执行应用程序?
我的猜测是,无论您使用什么工具 运行 作为服务的 PowerShell 脚本都是 32 位的,并且 C:\Windows\SysWOW64
中没有 quser.exe
。
如果是这种情况,您可以通过 运行ning C:\Windows\Sysnative\quser.exe
在 64 位 OS 上解决此问题(请参阅文档中的 File System Redirector详情)。
如果是这样的话,我会说你得到的信息("service runs with no profile and does not have execution access to the system folders")根本不正确。