Get-GPResultantSetOfPolicy 抛出“...无法为用户生成报告...”

Get-GPResultantSetOfPolicy 抛出“...无法为用户生成报告...”

我正在尝试从我们的多台服务器生成 RSOP。我需要的只是计算机结果,而不是用户结果。

这是我正在使用的 PowerShell 代码:

$computers = (Get-ADComputer -Filter ... -SearchBase ...).Name 

foreach  ($computer in $computers)
{
    Get-GPResultantSetOfPolicy -Computer $computer -ReportType xml -Path ...
}

这会在某些服务器上引发异常,基本上说明我从未登录过,因此不存在配置文件。

Get-GPResultantSetOfPolicy:无法为 MyComputer 计算机上的用户 MyUser 生成策略结果集 (RSoP) 报告,因为该计算机上没有该用户的 RSoP 日志记录数据。这可能是因为用户从未登录过该计算机。参数名称:User 所在行:1 字符:1 + Get-GPResultantSetOfPolicy -computer MyComputer -ReportType xml -path d:\ ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidArgument:(Microsoft.Group...OfPolicyCommand:GetGPResultantSetOfPolicyCommand) [Get-GPResultantSetOfPolicy],ArgumentException + FullyQualifiedErrorId:NoLoggingData,Microsoft.GroupPolicy.Commands.GetGPResultantSetOfPolicyCommand

此 cmdlet 的默认行为是使用默认用户,即执行该 cmdlet 的用户。

当然,有一个-User参数可以让我选择一个用户,从中我知道目标服务器上已经发生了登录(因此存在 Windows 配置文件)。但这很麻烦,因为我必须Get-WmiObject Win32_UserProfile -ComputerName MyComputer先使用例如来检索可用用户配置文件的列表,然后选择其中一个Get-GPResultantSetOfPolicy稍后执行...

普通的旧gpresult.exe行为完全以同样奇怪的方式发生...我不想/不能通过 rdp 进入每个服务器预先生成一个 windows 配置文件。

我认为有两种可能性:

  1. 使用脚本在每台服务器上生成 Windows 配置文件,然后返回Get-GPResultantSetOfPolicy
  2. RDP 进入每台机器......(不可行)

问题:

  • 我还遗漏了其他什么可能性吗?
  • 其他人是如何解决/解决这个问题的?
  • 如何在不使用 rdp 的情况下使用 powershell 生成/创建 Windows 配置文件?

答案1

我遇到了同样的情况,并使用 gpresult 找到了解决方案。以下是我对您的代码片段的补充:

$computers = (Get-ADComputer -Filter ... -SearchBase ...).Name 

foreach  ($computer in $computers)
{
    $LogPath = "\\Fileserver\share\RSOP_" + $computer + "_" + $(get-date).tostring('yyyy-MM-dd_hhmmss') + ".html"

    gpresult /S:"$computer" /H:"$logpath" 
}

这将获取您搜索的每台计算机,并使用计算机名称和运行日期创建 RSOP 日志。

希望这对那些寻找批量 RSOP 报告的人有所帮助。

相关内容