背景:做windows自定义镜像,一般是需要在关机做镜像前执行ipconfig /release来释放ip的,这样好保证下次基于此镜像买的新机器能在dhcp环节获取ip的健壮性,频繁做镜像的情况下,总是会忘记在做镜像前释放ip,因此想了个办法,就是通过配置组策略关机脚本来实现关机前释放ip
https://support.huaweicloud.com/bestpractice-ims/ims_bp_0011.html
华为云就把这点写到了他们官网
如果有条件,关机做镜像前最好手动执行ipconfig /release命令
加到关机脚本自动执行是防止做镜像前疑问执行这句命令
但是关机脚本在一些特定情况下可能执行不到,比如强制关机(有些人就喜欢强制关机做镜像)或者特殊情况关机没有执行到关机脚本
先确保没有其他干扰吧,一开始就是干净的啥都没有的情况下,dhcp分配还能分配错吗
假如没有组策略关机脚本的话,顺序就是0,如果有,要适当调整下代码,使序号不覆盖其他的关机脚本
如下代码适用中文版系统,大致思路就是:通过图形界面配置组策略关机脚本很简单,配置过程中用procmon监测到注册表路径有2个(后面的\0\0应该是顺序,反正我就一个脚本而已,不用考虑顺序,如果是多个,具体顺序你得调数字)
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown\0\0
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0\0
gpedit.msc→ 计算机配置→ Windows设置→ 脚本(启动/关机)→ 关机→ 添加→ 选择脚本位置
mkdir -force C:\Scripts\
$scriptsPath = "C:\Scripts"
if (!(Test-Path $scriptsPath)) {
New-Item -ItemType Directory -Path $scriptsPath
}
#$batContent = "@echo off`r`nipconfig /release"
$batContent = "@echo off`r`necho %date% %time% >> C:\Scripts\log.txt`r`nipconfig /release"
$batPath = Join-Path $scriptsPath "release-ip.bat"
Set-Content -Path $batPath -Value $batContent -Encoding ASCII
$shutdownScriptsPath1 = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown\0\0"
if (!(Test-Path $shutdownScriptsPath1)) {
New-Item -Path $shutdownScriptsPath1 -Force
}
$shutdownScriptsPath2 = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0\0"
if (!(Test-Path $shutdownScriptsPath2)) {
New-Item -Path $shutdownScriptsPath2 -Force
}
wget http://windows-1251783334.cos.ap-shanghai.myqcloud.com/releaseip.reg -Outfile c:\releaseip.reg
reg import c:\releaseip.reg
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。