Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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 具有RunAs用户和自动转录功能的受约束端点';无法正确记录调用用户的日志_Powershell_Powershell Remoting_Powershell 5.0 - Fatal编程技术网

Powershell 具有RunAs用户和自动转录功能的受约束端点';无法正确记录调用用户的日志

Powershell 具有RunAs用户和自动转录功能的受约束端点';无法正确记录调用用户的日志,powershell,powershell-remoting,powershell-5.0,Powershell,Powershell Remoting,Powershell 5.0,我已使用RunAs用户创建了PowerShell会话配置。我可以使用输入PSSession和调用命令以及通过PowerShell Web访问连接到配置。它可以正常工作,并且似乎以RunAs用户的身份正确运行 我还通过组策略启用了自动转录,以便记录所有PowerShell会话 PowerShell成绩单记录了一个“用户名”和一个“RunAs用户”,据我所知,这正是针对这种情况的 但我遇到的问题是,它将RunAs用户记录为两个用户,用于连接会话的用户名不会记录在任何地方 这是我的成绩单的顶部,用户名

我已使用RunAs用户创建了PowerShell会话配置。我可以使用
输入PSSession
调用命令
以及通过PowerShell Web访问连接到配置。它可以正常工作,并且似乎以RunAs用户的身份正确运行

我还通过组策略启用了自动转录,以便记录所有PowerShell会话

PowerShell成绩单记录了一个“用户名”和一个“RunAs用户”,据我所知,这正是针对这种情况的

但我遇到的问题是,它将RunAs用户记录为两个用户,用于连接会话的用户名不会记录在任何地方

这是我的成绩单的顶部,用户名和机器名都已更改
DOM\adminuser
us为RunAs用户,但对会话进行身份验证的用户不同(我自己的帐户)

我不认为这是怎么回事。我希望在“用户名”字段中看到我的用户


我希望有人以前见过这个。

我想我知道了。我很确定
runasuser
字段用于虚拟帐户(
RunAsVirtualAccount
),如果您将端点设置为模拟,而不是真正用于使用
RunAsCredential

不幸的是,虚拟帐户对我不起作用,因为它必须是本地帐户,我需要它来访问域

我不是100%同意这个,所以除非我得到确认,否则我不会接受我自己的答案,所以希望其他人有更多的信息


更新 经过更多的阅读,我确信这是“预期”的行为,上面的说法是正确的

为完整起见,我要寻找的用户(“调用方”)称为“已连接用户”,如果您正在记录这些事件,则可以在事件日志中找到。碰巧我是。事件包含进程的PID,该PID也可以在成绩单中找到,因此我可以从成绩单中读取PID,然后找到与之相关的所有事件

下面是一个(非常粗略的)片段:

[int]$logpid = gc $log | % { 
    if ($_ -match '^Process ID:\s(?<pid>\d+)') {
        $Matches['pid']
    }
} | Select-Object -First 1

$events = Get-WinEvent -ProviderName 'Microsoft-Windows-PowerShell' -FilterXPath "*[System[Execution[@ProcessID='$logpid']]]"
在这种情况下,您将使用
$infohash.Connected User'
查找连接到会话的用户,并使用
$infohash.User
查看进程的标识(运行方式用户)


这几乎没有经过测试,它需要工作,但希望它能作为一个起点,帮助别人。

我想我找到了答案。我很确定
runasuser
字段用于虚拟帐户(
RunAsVirtualAccount
),如果您将端点设置为模拟,而不是真正用于使用
RunAsCredential

不幸的是,虚拟帐户对我不起作用,因为它必须是本地帐户,我需要它来访问域

我不是100%同意这个,所以除非我得到确认,否则我不会接受我自己的答案,所以希望其他人有更多的信息


更新 经过更多的阅读,我确信这是“预期”的行为,上面的说法是正确的

为完整起见,我要寻找的用户(“调用方”)称为“已连接用户”,如果您正在记录这些事件,则可以在事件日志中找到。碰巧我是。事件包含进程的PID,该PID也可以在成绩单中找到,因此我可以从成绩单中读取PID,然后找到与之相关的所有事件

下面是一个(非常粗略的)片段:

[int]$logpid = gc $log | % { 
    if ($_ -match '^Process ID:\s(?<pid>\d+)') {
        $Matches['pid']
    }
} | Select-Object -First 1

$events = Get-WinEvent -ProviderName 'Microsoft-Windows-PowerShell' -FilterXPath "*[System[Execution[@ProcessID='$logpid']]]"
在这种情况下,您将使用
$infohash.Connected User'
查找连接到会话的用户,并使用
$infohash.User
查看进程的标识(运行方式用户)


这几乎没有经过测试,它需要工作,但希望它能作为一个起点,帮助他人。

您最终是否能够通过访问域远程运行powershell?如果我对你的帖子理解正确的话,你的经验和我差不多。在我要远程运行的cmdllet中,我需要使用域帐户(Windows auth)访问SQL Server。当我直接从远程服务器运行此cmdlet时—一切正常,但当我尝试远程运行它时—它失败,因为无法对数据库进行身份验证。第一种情况下的powershell.exe和第二种情况下的wsmprovhost.exe都在同一个域帐户下运行。你知道怎么做吗fi@SiarheiMachel我的帖子是关于向RunAs帐户注册PowerShell会话配置的。听起来您可能只是作为域用户进行PowerShell远程处理?如果是这样,您遇到的问题可能是Kerberos双跳。在某种程度上,我试图在这里做的事情避免了这个问题。如果远程处理主机已作为域用户运行,则连接用户的标识仅用于授权,而运行代码时使用本地配置的凭据。您是否最终成功远程运行了一段powershell,并访问了域?如果我对你的帖子理解正确的话,你的经验和我差不多。在我要远程运行的cmdllet中,我需要使用域帐户(Windows auth)访问SQL Server。当我直接从远程服务器运行此cmdlet时—一切正常,但当我尝试远程运行它时—它失败,因为无法对数据库进行身份验证。第一种情况下的powershell.exe和第二种情况下的wsmprovhost.exe都在同一个域帐户下运行。你知道怎么做吗fi@SiarheiMachel我的帖子是关于向RunAs帐户注册PowerShell会话配置的。听起来您可能只是作为域用户进行PowerShell远程处理?如果是这样,您遇到的问题可能是Kerberos双跳。在某种程度上,我试图在这里做的事情避免了这个问题。如果远程处理主机已作为域用户运行,则在运行code us时,连接用户的标识仅用于授权
$infohash = $events[0].Properties[0].Value -split '\r?\n' | 
    % -b { $stuff = @{} } -p { 
        $kv = $_ -split '\s+=\s+' 
        $stuff[$kv[0].Trim(' ',"`t")] = $kv[1] 
    } -e { $stuff }