批量禁用在text / csv文件中找到的本地帐户

时间:2015-10-05 10:34:42

标签: powershell local user-accounts adsi

我需要根据文本文件或CSV文件中的输入禁用大约250个本地用户帐户,然后将结果导出为CSV文件。

我已经搜索了网络安静了一下,但我找不到任何可以定制的东西。 这是我尝试过的;

我试过这个:

$Workdir = 'C:\scripts\' 
$Output = $Workdir + 'Disabled-UserReport.csv' 
$InputFile = $Workdir + 'Users_To_Disable.csv' 
$Servers = 'LOCALHOST' 
Import-CSV $InputFile | ForEach-Object {
    $Server = $_ ([ADSI]"WinNT://$Server").Children | ? {$_.SchemaClassName -eq 'user'} | % { $User.UserFlags[0] = $User.UserFlags[0] -bor 0x2 $User.SetInfo() }
}| Export-CSV -Encode UTF8 -Path C:\scripts\Disabled-Users.csv

这是尝试二:

$Servers = 'LOCALHOST'
$Username = Import-CSV "C:\scripts\Users_To_Disable.csv"
$Username | FOREACH { 
    $Server = $_ 
    $objGroup = [ADSI]("WinNT://$env:ComputerName/User")
    $objGroup.PSBase.Invoke("Add",$objUser.PSBase.Path) 
    $User.description = $description 
    <#$User.userflags = $DisableUser#> 
    $User.setinfo() 
} | Export-CSV -Encode UTF8 -Path C:\scripts\Disabled-Users.csv

我知道这两个脚本都有一些非常错误......正如你所看到的那样,每当我有空的时候,我就会看到我是一个noob学习PS的人:) 如果它在PS2中运行会很棒。但需要使用PS4。

感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

是的,我上周终于进行了管理....谢谢! 其他一些新手想要的代码。它根据文本文件的输入禁用帐户,并将帐户设置为密码永不过期,密码无法更改;

$EnableUser = 512 
$DisableUser = 2 
$PasswordNotExpire = 65536 
$PasswordCantChange = 64 
$users = Get-Content -path "C:\Users_To_Disable.txt" 
$computer = $env:COMPUTERNAME

Foreach($user in $users){ $user = [ADSI]"WinNT://$computer/$user"
$user.userflags = $DisableUser+$PasswordNotExpire+$PasswordCantChange
#$user.Userflags = $EnableUser+$PasswordNotExpire+$PasswordCantChange
$user.setinfo()
}

答案 1 :(得分:0)

抱歉,这不是答案,我即将离开工作,但你看到这篇文章了吗? http://blogs.technet.com/b/heyscriptingguy/archive/2010/11/22/use-powershell-to-enable-or-disable-a-local-user-account.aspx

这可能会有所帮助。如果没有,我道歉。

答案 2 :(得分:0)

这不是你的答案,但谷歌在PowerShell中禁用本地用户帐户是一个很大的打击。以下是我使用你的答案汇总的内容

function user-enable()
{
    param([string] $username, [boolean] $enabled)

    $disableFlag = 2 
    $enableFlag = 512

    $flag = if ($enabled) {$enableFlag} else {$disableFlag} # powershell turnary lol

    $computername = $env:COMPUTERNAME
    $user = [adsi]"WinNT://$computername/$username"
    $user.userflags = $flag
    $user.setinfo()
}

user-enable -username "packer" -enabled $false