运行 powershell 命令会毁掉用户

运行 powershell 命令会毁掉用户

执行脚本的计算机位于一个域中,我将其称为内部域。被测试的用户位于另一个(外部)域中。

我编写了一个脚本来检查用户是否存在于两个域中。以下是脚本中的一段代码,它不会引起问题。

$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 中无法正确显示。

一个很好的例子是文件属性安全选项卡。用户显示为

领域\[电子邮件保护]而不仅仅是域名\用户名

这会导致各种奇怪的事情,例如想要访问该文件夹的用户失去对它的权限。

有没有办法恢复正常行为?遗憾的是,重新启动机器不是一种选择。

答案1

您正在调用两个不同的构造函数 Vladimir。工作中的构造函数正是您所期望的:从两个单独的字符串设置域和用户。第二个构造函数采用单个字符串,仅需要用户名,并且可能使用正在运行命令的计算机的域作为默认值msdn 文档在这方面有些欠缺。

问题是,无论从哪方面来看,他们的用户名 [电子邮件保护],这就是问题所在。

恢复正常行为?尝试更改用户名或(喘气)重新创建帐户对象。

如果你指的是正常行为,比如用单个字符串输入执行第三行,那么尝试

$objuser = New-Object System.Security.Principal.NTAccount('username');

答案2

我找到了解决方案。据我所知,我需要告诉服务器再次获取 SID,而不是使用 cashe。

使用 Microsoft 提供的此支持链接可立即解决问题,无需重新启动,并且剩余一个具有错误用户名的用户也可自行修复。

http://support.microsoft.com/kb/946358

问题解决后,再次启用它可能是安全的。

相关内容