1.腳本:
C:\Windows\System32\cmd.exe /C setlocal disabledelayedexpansion & >IEproxy.bat echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f & >>IEproxy.bat echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "${{ipproxy}}:80" /f & >plan.bat echo echo schtasks /create /tn fit2cloudapp /tr IEproxy.bat /sc once /st (get-date).ADDMINUTES(5).tostring("HH:mm") /np ^>IEfit2cloud.ps1 & >>plan.bat echo C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe IEfit2cloud.ps1 ^> IEfit2cloud.log & plan.bat > plan.log & schtasks > IEfittask.log & IEproxy.bat > IEproxy.log & >IEreg.bat echo reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" IEfit2cloud.reg & >>IEreg.bat echo whoami /user ^> IEwhoami.txt & IEreg.bat |
2.解析:
C:\Windows\System32\cmd.exe /C setlocal disabledelayedexpansion
##setlocal disabledelayedexpansion是關閉變量延遲的意思
& >IEproxy.bat echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
& >>IEproxy.bat echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "${{ipproxy}}:80" /f
##通過修改註冊表方式設置當前用戶的ie代理服務器
& >plan.bat echo echo schtasks /create /tn fit2cloudapp /tr IEproxy.bat /sc once /st (get-date).ADDMINUTES(5).tostring("HH:mm") /np ^>IEfit2cloud.ps1
##設置一個計劃任務,5分鐘後執行上面那個修改ie代理服務器的腳本,由於使用了部分powershell的命令,所以需要生成powershell文件,再去執行
##schtasks 管理計劃任務的命令 /create 指創建計劃任務 /tn 指任務名稱 /tr 指要運行的程序 /sc 指任務類型 once 只運行一次 /sd 指任務開始日期 /st 指任務開始時間 /np 指後臺運行,免用戶登錄再運行
##(get-date).ADDMINUTES(5).tostring("HH:mm")是獲取當前時間5分鐘後的時間
& >>plan.bat echo C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe IEfit2cloud.ps1 ^> IEfit2cloud.log
##通過bat去調用powershell,執行上面生成的powershell腳本
& plan.bat > plan.log
##執行該計劃任務到bat腳本並輸出日誌
& schtasks > IEfittask.log
##輸出當前計劃任務列表到日誌文件
& IEproxy.bat > IEproxy.log
##執行該配置ie代理服務器的bat腳本並輸出日誌
& >IEreg.bat echo reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" IEfit2cloud.reg
##導出註冊表Internet Settings子項到日誌文件(爲了方便排錯)
& >>IEreg.bat echo whoami /user ^> IEwhoami.txt
##查看當前用戶的sid並輸出到日誌(爲了方便排錯)
& IEreg.bat
##執行該查看註冊表和SID的bat腳本
-----------------
Q1:爲什麼配置了一遍還要生成計劃任務再執行一遍
A1:爲了防止第一修改註冊表的時候,系統還在初始化
Q2:IEfit2cloud.reg備份的註冊表文件有啥用
A2: 可以知道第一次配置完後註冊表中的內容
Q3:IEwhoami.log日誌文件有啥用
A3:配置IE代理只能配置當前用戶的註冊表信息,也就是HKEY_CURRENT_USER項,如果配置完註冊表後系統發生自定義重啓配置,會同時重置註冊表,提前獲取SID可以當前SID做比較,兩者一樣說明系統沒進行初始化或者已經初始化完成了
Q4:爲什麼系統會進行初始化重置
A4:2.0版添加雲賬號的時候開啓自定義規範,虛擬機初始化步驟如下,但是20190423前的vsphere插件版本中沒有對VM重啓進行事件跟蹤,存在安裝中間件時,虛擬機還在重啓,SID變了,註冊表信息不生效。
- linux : 應用自定義規範(設置ip、hostname),完成後表示虛機創建完成>返回虛機對象給cmp>cmp通過執行修改密碼腳本來設置密碼>安裝中間件>初始化操作系統腳本
- windows : 應用自定義規範(設置ip、hostname、重置密碼)>完成後表示虛機創建完成>安裝中間件>初始化操作系統腳本