我创建了一个登录脚本,用于将过去X天内在计算机上的所有用户提升为Administrators组。我已成功测试了此脚本,并且在我的任何测试中都没有执行问题。我创建了一个GPO,将此脚本链接到我的组织中的特定OU,我发现正确执行的失败率为25%。
“失败”是一个麻烦的部分,因为1)它只发生在相对少量的用户身上,并且因为这2)我不明白概念上发生了什么。具体来说,用户登录后,然后PowerShell.exe立即启动和关闭,但随后继续无限期地执行此操作,直到您强制退出PowerShell - 该窗口将焦点放在桌面上并阻止用户工作。
当我使用计算机管理远程查看计算机上的管理员组成员身份时,我可以看到该脚本成功运行(它将用户提升为管理员)但我不确定是什么原因导致它重新生成,并且仅针对某些人用户。
我可以发布脚本,如果它有帮助(它的简短),但由于它大部分时间“工作”,我倾向于假设PowerShell的某些组件在这些机器上失败或失败。我希望这种行为是众所周知的,或者以前曾被社区中的某些人所体验过。 我要补充的最后一点是,在2个案例中,只需让用户重新启动即可。
脚本代码:
# Launches elevated PS session if possible.
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
$Threshold = (Get-Date).AddDays(-30)
# Non-builtin regular user SIDs are always prefixed S-1-5-21-
$DomainUserFilter = "SID LIKE 'S-1-5-21-%'"
# Suppress Errors
$ErrorActionPreference = "SilentlyContinue"
# Retrieve user profiles
$DomainProfiles = Get-WmiObject -Class Win32_UserProfile -Filter $DomainUserFilter
foreach($UserProfile in $DomainProfiles)
{
# Check if profile was ever used, skip if not
if(-not $UserProfile.LastUseTime)
{
continue
}
# Convert the datetime string to a proper datetime object
$LastUsed = $UserProfile.ConvertToDateTime($UserProfile.LastUseTime)
# Compare against threshold
if($LastUsed -gt $Threshold)
{
# Resolve user profile SID to account name
$Account = (New-Object System.Security.Principal.SecurityIdentifier $UserProfile.SID).Translate([System.Security.Principal.NTAccount])
if($?)
{
# Add to Administrators group
net localgroup administrators $Account.Value /add
}
}
}
net localgroup administrators “domain users” /delete
exit
答案 0 :(得分:0)
我自己想出来了 - 唯一有争议的部分是开头的.net内容所以我试着评论那部分:
myModule.directive('ageCheck', function() {
return {
require: "ngModel",
link: function(scope,element,attributes,ngModel) {
ngModel.$validators.ageCheck=function(modelValue) {
return scope.age>18;
}
}
}
});
<form name="action">
<div class="form-group">
<label>age</label>
<input type="number" name="ageField" class="form-control" ng-model="age" age-check>
<p class="text-danger" ng-show="action.ageField.$error.ageCheck">You cannot register you're under 18!</p>
</div>
并且工作正常......我认为在未正确执行此操作的计算机上存在.NET问题,感谢您查看此内容。