AD域管理员好帮手--切换特权用户执行程序

AD域环境下,帮助运维人员管理用户软件安装,特权调用,提升管理员权限的,密码修改和查看域用户信息的好帮手!
帮助文件如下,
-domain:域名 #如 pc.com 与-admin,-secretpwd一起使用
-admin:用户名 #切换的特权域用户名一般为domain admins成员
-secretpwd:密文密码 #加密后的特权用户密码
-adminxml #读取由-toscrect保存的域及特权用户信息,不能与 -domain,-admin,-secretpwd一起使用!
-path:路径 #程序或脚本的路径 与-mode一起使用,执行程序或脚本
-mode:0或1 #执行的模式,0表示把程序结果直接返回命令行,1表示新的窗口执行程序
-ArgumentList:参数 #脚本或程序的参数,与-path一起使用,提示保存域及特权用户相关
-pwdrandtoxml:用户名 #信息到配置文件,作用等同-domain,-admin,-secretpwd程序自动修改特权用户的密文密码到配置文件里,密码是复杂的,随机的并生成日志,pwdcclog

-changepwd #进入用户密码修改模块
-usernotice:用户名 #检查密码到期时间的用户名 与-userpwddays一起使用,返回密码剩余使用天数
-userpwddays:n #密码使用期限 与-usernotice一起使用

-usercsv #返回域内所有用户信息以^为分隔符的csv
-usergroupxml #返回用户和所属组的信息格式为xml
-pcinfo:xml或json #返回所有域计算机信息,分xml或json

-poweruser:用户名 #提升下降本地管理员组的域用户名 与-powerstate一起使用
-powerstate:up或down #提升或踢出本地管理员

声明:本命令行程序运行.net4.5框架下,请及时安装.net4.5,注意:
1,切换域特权用户运行各种程序和脚本和域用户提升管理员必须在域环境内
2,修改密码到期提醒及显示域用户或计算机信息可在非域环境内,走的是LDAP://xxx.com协议
3,所有功能原程序目录下都有使用的例子
4,原创作品,免费使用,盗版破解可耻,保留追究法律责任的权利,作者QQ:251838045!

切换域管理员权限运行程序
与传统的runas命令 相比,可以不用每次提示输入和密码,将命令行参数的参数+加密密码方式或xml配置文件的方式来自动切换,方法如下
第一步用 先将域管理员(domain admins组成员)的明文密码加密 如密码abcd@1234
@echo off
切换用户身份运行程序.exe -tosecret:abcd@1234
pause
或者修改
目录下该程序
在这里插入图片描述

加密后还会提示输入域和该密码的用户名,输入后保存到配置文件里
AD域管理员好帮手--切换特权用户执行程序_第1张图片

保存的信息在这个文件里,而且加密的密码已经复制到粘贴板里
切换用户身份运行程序.exe.Config里的内容
AD域管理员好帮手--切换特权用户执行程序_第2张图片

加密的密码是图上的CnB9GFDzvBaJsEH97l34CTq30qg3OcX3sQ3CbFNpFQ4=
那么现在开始用域管理员身份运行和安装程序了
第一种方法 -

切换用户身份运行程序.exe -mode:1 -path:"test\CometAssistant.exe" -ArgumentList:"1231 2 3132" -domain:zyf.com -admin:xxoo -secretpwd:CnB9GFDzvBaJsEH97l34CTq30qg3OcX3sQ3CbFNpFQ4=

-mode: 0或1 #执行的模式,0表示把程序结果直接返回命令行,1表示新的窗口执行程序
-path:路径 #程序或脚本的路径 与-mode一起使用,执行程序或脚本
-ArgumentList:参数 #脚本或程序的参数,与-path一起使用,根据您的程序来
-domain:域名 #如 pc.com 与-admin,-secretpwd一起使用
-admin:用户名 #切换的特权域用户名一般为domain admins成员
-secretpwd:密文密码 #加密后的特权用户密码,不是用户的明文密码
上面的程序的解释是在域zyf.com的环境下以用户xxoo加密密码CnB9GFDzvBaJsEH97l34CTq30qg3OcX3sQ3CbFNpFQ4=运行程序test\CometAssistant.exe
这个程序的参数是1231 2 3132 新窗口的方式打开
第二种方法 -
-adminxml读取切换用户身份运行程序.exe.Config 里的配置文件里的域管理员信息来执行程序取代 -domain,-admin,-secretpwd这3个参数

切换用户身份运行程序.exe -mode:1 -path:"msconfig.exe" -adminxml

运行结果如下
AD域管理员好帮手--切换特权用户执行程序_第3张图片

还有其他相关的vbs,ps1,bat脚本特权执行的例子在目录下都有实例
AD域管理员好帮手--切换特权用户执行程序_第4张图片

那小伙伴问了,切换了用户身份仍然无法安装权限很高特殊的程序怎么办?那我们可以将域用户提升到本地管理员组,再来切换

@echo off
::提升域用户为本地管理员组
"切换用户身份运行程序.exe" -poweruser:zyf\sex -powerstate:up -domain:zyf.com -admin:xxoo -secretpwd:CnB9GFDzvBaJsEH97l34CTq30qg3OcX3sQ3CbFNpFQ4=
pause
net localgroup administrators
timeout -t 8
::将域用户踢出本地管理员组
"切换用户身份运行程序.exe" -poweruser:zyf\sex -powerstate:down -adminxml
pause
net localgroup administrators
pause

-poweruser:用户名 #提升下降本地管理员组的域用户名 与-powerstate一起使用
-powerstate:up或down #提升或踢出本地管理员
在目录下有这个程序的例子改变域用户是否本地管理员0.bat
该命令行的主要功能介绍完毕
下面介绍域用户密码修改功能

@echo off
set domain=zyf.com
set admin=xxoo
set pwd=CnB9GFDzvBaJsEH97l34CTq30qg3OcX3sQ3CbFNpFQ4=
echo %pwd%
切换用户身份运行程序.exe -changepwd -domain:%domain% -admin:%admin% -secretpwd:%pwd%
pause

执行以上程序后将弹出修改界面
AD域管理员好帮手--切换特权用户执行程序_第5张图片

那如何做到用户密码到期提醒功能了,实例代码如下

cls
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Currentpath=Split-Path -parent $MyInvocation.MyCommand.Definition #获取脚本目录
$user="sex" #设置查询的域用户名 当前登录用户$env:USERNAME
$pwddays=7#"密码策略定义最长的密码使用天数"
$noticebefore=9 #提前多少天提醒
#求剩余使用天数
[int]$surplus=&"$($Currentpath)\切换用户身份运行程序.exe" -usernotice:$user -userpwddays:$pwddays -adminxml
#提前天数大于剩余天数给予提醒
if ($noticebefore -ge $surplus ){ 
$msg=[System.Windows.Forms.MessageBox]::Show("尊敬的用户$($user):`r`n您的密码将在$($surplus)后过期,是否需要及时修改?","今天是$((Get-Date).ToString("yyyy年MM月dd号"))",[System.Windows.Forms.MessageBoxButtons]::YesNo,[System.Windows.Forms.MessageBoxIcon]::Information)
if($msg -eq [System.Windows.Forms.DialogResult]::Yes){
&"$($Currentpath)\切换用户身份运行程序.exe" -changepwd -adminxml
}
}

相关使用程序在目录下
AD域管理员好帮手--切换特权用户执行程序_第6张图片

再来一个问题,怎么防止用户用这个程序私自去跑一些非法软件?
我们可以通过定时修改特权密文密码,比如10s自动换一次到切换用户身份运行程序.exe.Config 里,用户那不到更新的exe.Config 自然就跑不了了,代码如下

cls
$Currentpath=Split-Path -parent $MyInvocation.MyCommand.Definition #获取脚本目录
$every=New-Object Timers.Timer
$every.Interval=1000 
$every.Enabled=$true
[int]$timer=10 #间隔10秒发生修改密码
Get-EventSubscriber -Force|Unregister-Event -Force #取消所有注册事件
[int]$n=0
Register-ObjectEvent -inputObject $every -eventName Elapsed -sourceIdentifier Timer.every -Action{
$n++
if( $n -eq $timer){
#以一定要一个domain admin组的成员去修改另一个domain admin的成员随机密码到配置文件里以下是administrator修改xxo
$result=&"$($Currentpath)\切换用户身份运行程序.exe" -pwdrandtoxml:xxoo -domain:zyf.com -admin:administrator -secretpwd:e13YcdIDwZ0UFZbFuY0r6sNSJg4+6WplSfnMTD43tvNMve5dSh2R69Ni4FRtbLRL+YH3mByvY7I=
Write-Host $result -ForegroundColor Green
$n=0
}
}

相关使用程序是在目录下定时随机修改特权用户密码到配置文件0.ps1,会产生更新日志到目录下pwdcclog.txt
好的其他功能大家也可尝试下
AD域管理员好帮手--切换特权用户执行程序_第7张图片

基本介绍到这里,还是有什么问题加QQ群54048294,咨询作者志正网络科技
下载地址
链接: https://pan.baidu.com/s/1U1ANR-7oKnkXG3nRscNe9g 提取码: xf6f 复制这段内容后打开百度网盘手机App,操作更方便哦

你可能感兴趣的:(服务器,运维)