我正在尝试从我们的多台服务器生成 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 配置文件。
我认为有两种可能性:
- 使用脚本在每台服务器上生成 Windows 配置文件,然后返回
Get-GPResultantSetOfPolicy
- 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 报告的人有所帮助。