运行PowerShell命令毁了用户

脚本执行的计算机在一个域中,我将其称为内部域。 被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

问题解决后重新启用它可能是安全的。