本質上,我的腳本應該檢查管理員組中的每個用戶是否都列在文本檔案中,如果是,則忽略它并繼續。如果不是,它會將用戶從管理員組中洗掉。但是,Get-LocalGroupMember 將計算機名稱添加到用戶名前面。這意味著 txt 檔案中的用戶名(ex user1)與 Get-LocalGroupMember 命令(ex desktop/user1)中的 $._Name 變數不匹配。這是代碼的副本
$GroupName = "Administrators"
$Exclude = "Administrator","$env:UserName"
$AuthorizedAdmins = Get-Content C:\Users\$env:UserName\admins.txt
Get-LocalGroupMember $GroupName |
ForEach-Object{
if ($_.ObjectClass -eq 'User'){
if ($AuthorizedAdmins -contains $_.Name -or $Exclude -contains $_.Name){
Continue
}
else{
Remove-LocalGroupMember -Group $GroupName -Member $_.Name -Confirm
}
}
}
我嘗試了幾種解決方案。在代碼中,我創建了一個新變數,它洗掉了 $._Name 字串的前 $env:ComputerName 1 個字符。雖然這確實可以洗掉計算機名,但 powershell 會出錯。這是錯誤代碼和更改的腳本:
Get-LocalGroupMember : System error.
At users.ps1:6 char:1
Get-LocalGroupMember $GroupName |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : NotSpecified: (:) [Get-LocalGroupMember], ContinueException
FullyQualifiedErrorId : An unspecified error occurred.,Microsoft.PowerShell.Commands.GetLocalGroupMemberCommand
$GroupName = "Administrators"
$Exclude = "Administrator","$env:UserName"
$AuthorizedAdmins = Get-Content C:\Users\$env:UserName\admins.txt
Get-LocalGroupMember $GroupName |
ForEach-Object{
$User = $_.Name
$length = $env:ComputerName.Length 1
$ShortUser = $User.Remove(0,$length)
if ($_.ObjectClass -eq 'User'){ #ignore groups and select only users
if ($AuthorizedAdmins -contains $ShortUser -or $Exclude -contains $ShortUser){
Continue
}
else{
Remove-LocalGroupMember -Group $GroupName -Member $_.Name -Confirm
}
}
}
admin.txt 檔案的格式如下:
user1
user2
user3
我不知道如何解決這個問題,盡管它可能很簡單。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
您的代碼的真正問題是您continue在ForEach-Object回圈中使用,請參閱檔案中的注釋。如果您想continue在流水線處理函式中進行模擬,您應該return改用它。因此,您的代碼經過一些改進和簡化后將是:
$GroupName = "Administrators"
$exclude = @(
"Administrator"
$env:UserName
Get-Content C:\Users\$env:UserName\admins.txt
)
Get-LocalGroupMember $GroupName | ForEach-Object{
# if its not a user, skip this logic
if ($_.ObjectClass -ne 'User') {
return
}
# here we assume its a user
if ($_.Name.Split('\')[-1] -in $exclude) {
return
}
Remove-LocalGroupMember -Group $GroupName -Member $_.Name -Confirm
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534715.html
標籤:视窗电源外壳
