脚本执行的计算机在一个域中,我将其称为内部域。 被testing的用户在其他(外部)域中。
我做了一个脚本来检查用户是否存在于两个域中。 这里是脚本的一个片段,不会导致问题。
$domain = 'domain.com'; $user = 'username'; $objuser = New-Object System.Security.Principal.NTAccount($domain, $user); $objUser.Translate([System.Security.Principal.SecurityIdentifier]) > $nil;
在我尝试执行第三行之前,像这样引起了问题:
$objuser = New-Object System.Security.Principal.NTAccount('[email protected]');
我现在遇到的问题是一些来自外部域的用户在Windows中没有正确显示。
好例子是文件属性安全选项卡。 用户显示为
DOMAIN \ [email protected]而不是DOMAIN \ username
这会导致各种奇怪的事情,例如想要访问该文件夹的用户失去权限。
有没有办法恢复正常的行为? 不幸的是重新启动机器不是一个选项。
你叫两个不同的build设者弗拉基米尔。 工作之一就是你所期望的:从两个单独的string中设置域和用户。 第二个使用单个string的构造函数只需要一个用户名,并且可能使用正在运行命令的机器的域,因为缺省的msdn文档有点缺乏。
问题是,对于所有意图和目的,他们的用户名是 [email protected],这是问题所在。
恢复正常的行为? 要么尝试更改用户名称或(gasp)重新创build帐户对象。
如果你的意思是正常的行为,就像用单个stringinput执行第三行那样尝试
$objuser = New-Object System.Security.Principal.NTAccount('username');
我find了解决scheme。 从我发现我需要告诉服务器重新获得SID,而不是使用亏损。
使用来自Microsoft的这个支持链接立即解决了这个问题,而没有重新启动,剩下的用户用户名有问题修复了这个问题。
http://support.microsoft.com/kb/946358
问题解决后重新启用它可能是安全的。