#requires -Version 1
##Set-PSDebug -Trace 1
set-executionpolicy remotesigned
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
}
##电脑名称
$ComputerName = ''
##获取IP地址
$ip=[System.Net.Dns]::GetHostAddresses($ComputerName) |
Where-Object {
$_.AddressFamily -eq 'InterNetwork'
} | Select-Object -ExpandProperty IPAddressToString
##截取IP地址最后数字,转换并进行转换
$str=$ip.Split(".")[3]
$str_scr=$str.Replace('0',')').Replace('1','!').Replace('2', '@' ).Replace('3','#').Replace('4','$').Replace('5', '%').Replace('6', '^').Replace('7','&').Replace('8', '*').Replace('9', '(')
##生成密码
$a=$str.Length
$b="XXXX"
$c="XXXX"
if($a -eq 1)
{
$passwd1=($b,$str_scr -join("@))"))
$passwd2=($c,$str -join("@00"))
}
elseif($a -eq 2)
{
$passwd1=($b,$str_scr -join("@)"))
$passwd2=($c,$str -join("@0"))}
elseif ($a -eq 3)
{
$passwd1=($b,$str_scr -join("@"))
$passwd2=($c,$str -join("@"))}
else {
$passwd1=($b,$str -join("@"))
$passwd1=($c,$str -join("@"))
}
#修改密码
#Write-Output $passwd1
#Write-Output $passwd2
#查询admin是否存在
$user=Get-WmiObject -Class Win32_UserAccount -Filter "Name='admin'"
#查询Admin是否是属于本地管理员群组
$group = 'Administrators'
$temp = Get-WmiObject -Query " select * from Win32_GroupUser"
$Admins = ""
foreach ($t in $temp )
{
if ($t.GroupComponent -match $group)
{
$longstr = $t.PartComponent
$namepos = $longstr.IndexOf("Name=") + 6
$Domainpos = $longstr.IndexOf("Domain=") + 8
$Domain = $longstr.Substring($Domainpos, $namepos - $Domainpos - 8)
$name = $longstr.Substring($namepos, $longstr.Length - $namepos -1)
if($name="admin")
{
$Admins = $name
}
else
{
}
$Admins=$Admins
}
}
#设置密码并记录
$result=""
try
{
if($user.Name -contains "admin" -and $Admins -eq "admin" )
{
Write-Output “修改本地管理员组admin账户密码”
net user admin $passwd2
$today= Get-Date
$result+= $today,"修改本地管理员组admin账户密码完成" -join("-")
Write-Output “修改本地管理员组admin账户密码完成”
}
elseif($user.Name -contains "admin" -and $Admins -eq "")
{
Write-Output “修改admin账户密码并加入本地管理员组”
net user admin $passwd2
net localgroup administrators admin /add
$today= Get-Date
$result+= $today,"修改admin账户密码并加入本地管理员组完成","`n" -join("-")
Write-Output “修改admin账户密码并加入本地管理员组完成”
}
else
{
Write-Output “新增admin账户并加入本地管理员组”
net user admin $passwd2 /add
net localgroup administrators admin /add
$today= Get-Date
$result+= $today,"新增admin账户并加入本地管理员组完成","`n" -join("-")
Write-Output “新增admin账户并加入本地管理员组完成” }
}
catch
{
Write-Output "增加账户异常结束!"
$today= Get-Date
$result+= $today,"增加账户异常结束","`n" -join("-")
}
net user administrator $passwd1
Write-Output “修改本机administrator账户密码”
$today= Get-Date
$result= $today,"修改本机Administrator密码完成","`n" -join("-")
sleep 5
$result | Out-File -filepath C:\tmp\log\update_passwd.log -Append -Force