AddAccessRule: "Some or all identity references could not be translated." 如何检查特定服务器?

AddAccessRule: "Some or all identity references could not be translated." How can I check a specific server?

对于大多数 ActiveDirectory 命令,您可以添加一个参数:-server。这个参数已经证明对我非常有用,因为我工作的地方似乎有某种更新缓慢的系统,当我不只使用其中一个服务器时,我的程序可能会滞后并完全错误。

我也在尝试修改文件夹的 ACL。为此,我有一个函数接受 New-ADGroup 命令的 -PassThru,然后将其通过管道传输到自定义函数中。

自定义函数创建 returns 新 AccessRules(添加到数组 $AccessRules),然后添加到 $acl 变量:

$AccessRules | 
%{$acl.AddAccessRule($_)}

这不一致 returns 错误:有时,它运行流畅,但其他时候,它 returns 经典 "Some or all identity references could not be translated"。我 90% 肯定这是因为它没有检查正确的服务器,因为即使在

之间
Get-ADGroup -filter {name -eq "[group name]"}

Get-ADGroup -filter {name -eq "[group name]"} -Server [server name/address]

我只得到第二个结果。

有什么方法可以将类似的 -Server 参数添加到 .AddAccessRule() 之类的东西中?也许方法略有不同?

您可以使用 this answer 中指定的巧妙技巧。您使用某个服务器为您的 AD 创建一个 New-PSDrive,然后调用 cdset-location 到该驱动器,瞧,任何调用的 .NET 函数(以及任何未重定向的 cmdlet到不同的服务器)将使用该服务器处理请求,将 AD 实体解析为 SID 等,而无需等待 AD 复制。