定时关机方案.docx
- 文档编号:4642570
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:14
- 大小:470.74KB
定时关机方案.docx
《定时关机方案.docx》由会员分享,可在线阅读,更多相关《定时关机方案.docx(14页珍藏版)》请在冰豆网上搜索。
定时关机方案
定时关机方案
tanzhenchao@
定时关机方案
制作关机脚本
以下脚本另存为“shu.ps1”,放置在“C:
\scripts\”目录下。
------------------------------------------------------------------------------------------------------
#$names定义要关闭的主机IP地址列表文件,文件的格式为“xxx.xxx.xxx.xxx”
$names=get-content"d:
\computers.txt"
#$time定义关机等待时间,单位为秒
$time=900
#$dir定义日志文件的保存目录
$dir="d:
\"
foreach($namein$names)
{
$date=Get-Date
$sdate=$date.ToString("G")
$logPath=$dir+$date.ToString("yyyy-MM-dd")+"-shu.log"
$eLogPath=$dir+$date.ToString("yyyy-MM-dd")+"-err_shu.log"
if(test-connection$name)
{
$r=shutdown/s/t$time/c"此计算机将被管理员执行关机计划!
"-m\\$name
if($r=1)
{
echo"$sdate\\$name,已被管理员执行关机计划!
">>$logPath
}
else
{
echo"$sdate\\$name,此计算机执行关机计划失败!
">>$eLogPath
}
}
else
{
echo"$sdate\\$name,已由使用人员关闭!
">>$logPath
}
}
--------------------------------------------------------------------------------------------
如上所示:
此脚本标红部分(三处)为要定义的变量参数,以下逐项说明:
$names=get-content"d:
\computers.txt"
此红色部分为要关闭的计算机的IP地址列表的文件路径,每一行代表一台计算机,文件详细内容定义如下:
如上所示:
脚本将读入文本中的计算机地址并尝试将计算机关闭。
$time=900
此红色部分定义关机等待的时间,单位为“秒”
$dir="d:
\"
此红色部分定义脚本日志的输出路径(可以使共享路径),不含文件名称,文件名称将由脚本其他地方定义。
如上图所示:
以上三个文件为脚本输出的日子文件,带“err”的用于记录关机异常日志文件,不带“err”字样的记录用户正常关机与被管理关机的日志。
日志内容大致如下:
注:
以上日志供值班人员参考
给脚本签名
由于受系统安全机制的影响,我们需要对系统进行签名,系统才会允许脚本正常运行。
制作签名证书
签名前的准备工作
由于脚本的签名要使用到“makecert.exe”证书制作工具,所以签名前需要先安装“Microsoft.NETFrameworkSDKv2.0”:
下载地址如下:
使用“makecert.exe”证书制作工具
单击【开始】-->【所有程序】-->【Microsoft.NETFrameworkSDKv2.0】-->【SDK命令提示】
窗口显示如下:
键入如下命令:
makecert.exe-pe-r-n"cn=TmarkPowerShell"-eku1.3.6.1.5.5.7.3.3-ss"my"
窗口显示如下:
如上图所示:
-eku参数:
1.3.6.1.5.5.7.3.3,不能是其它,证书预期目的属性签名
-n参数:
"cn=TmarkPowerShell",定义证书的名称。
确认证书已经建立成功:
键入如下命令:
PowerShell
lscert:
\CurrentUser\My|where{$_.subject-eq"CN=TmarkPowerShell"}
窗口显示如下:
如上图所示:
将可以查询到证书的“Thumbprint”与“Subject”
验证代码签名证书
查看预期目的为代码签名的证书
键入如下命令:
$certs=@(Dircert:
CurrentUser\My-codeSigningCert)
"找到{0}个代码签名证书"-f$certs.count
窗口显示如下:
选择刚才创建的证书:
键入如下命令:
$certificate=lscert:
\CurrentUser\My|where{$_.subject-eq"CN=TmarkPowerShell"}
$certificate.subject
$certificate.issuer
$certificate|selectSerialNumber,Thumbprint|fl*
窗口显示如下:
如上图所示:
分别可以查询到证书的“证书的代表”、“证书的签发者”、“证书的序列号”、“指纹”
设置证书信任
检查证书是否受信任
键入如下命令:
$certificate.Verify()
[System.Reflection.Assembly]:
:
LoadWithPartialName("System.Security")
[System.Security.Cryptography.x509Certificates.X509Certificate2UI]:
:
DisplayCertificate($certificate)
窗口显示如下:
然后弹出窗口如下:
将该证书复制到受信任的存储区
键入如下命令:
$rootStore=New-Objectsystem.security.cryptography.X509Certificates.x509Store("root","Currentuser")
$rootStore.Open("ReadWrite")
$rootStore.Add($certificate)
$rootStore.Close()
窗口显示如下:
然后弹出:
如上图所示:
单击【是】按钮后证书将被添加到受信任区域。
确认证书是否受信任
键入如下命令:
$certificate.Verify()
Powershell脚本签名
脚本签名
键入如下命令:
$certificate=lscert:
\CurrentUser\My|where{$_.subject-eq"CN=TmarkPowerShell"}
cdC:
\scripts
Set-AuthenticodeSignature.\shu.ps1$certificate
窗口显示如下:
检查是否已经签名
键入如下命令:
Get-Content.\shu.ps1
窗口的最后面将显示脚本的签名信息:
计划任务调用脚本
单击【开始】-->【控制面板】-->【系统和安全】-->【计划任务】
窗口显示如下:
如上图所示:
单击【操作】-->【创建任务】
窗口显示如下:
键入计划任务的“名称”
勾选【不管用户是否登录都要运行】
勾选【使用最高权限运行】
然后单击【触发器】选项卡
窗口显示如下:
单击【新建】
窗口显示如下:
如上图所示:
勾选【每天】
“开始”修改时间为“2:
00:
00”
勾选【启动】
单击【确认】退出
回到“创建任务”窗口
单击【操作窗口】
窗口显示如下:
单击【新建】
窗口显示如下:
如上图所示:
“程序或脚本中”中键入“C:
\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时 关机 方案