Windows UserData专题:设置静态DNS

2022-09-27 11:56:57 浏览数 (1)

UserData产品文档:https://cloud.tencent.com/document/product/213/17526

UserData依赖cloudbase-init,cloudbase-init依赖光驱,请不要禁用cloudbase-init服务或改动它、不要禁用光驱,不要删除光驱盘符,如果有安全软件,可能会拦截cloudbase-init,因为cloudbase-init通过python起作用,安全软件可能会认为这是风险项,因此有必要在安全软件里进行cloudbase-init的信任。

没禁用光驱就还好说,禁用了就无需向下看了。

UserData是RunInstances的一个参数,如果没勾选Base编码,那就是明文代码,如果勾选了,UserData就是一个String类型的参数,整段UserData代码需要base64编码后作为一行字符串传给UserData

买Windows机器的时候,以下代码粘到购买界面高级设置部分的自定义数据(userdata)里,下单后,后台会先准备机器硬件、灌入系统、开机,然后cloudbase-init服务启动、cloudbase-init执行完毕,整个过程需要时间,耐心等待几分钟再登录,如果操之过急,会报用户名密码错误或干脆就登录不了。

代码里"2"的判断逻辑可能需要根据实际情况调整,另外,代码里的dns片段可增可减,参考https://cloud.tencent.com/developer/article/1883469

<powershell>

#以管理员身份运行

Set-ExecutionPolicy -Scope CurrentUser Unrestricted -force

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

}

{

Set-ExecutionPolicy Unrestricted -force

while((powershell -c {(get-process|findstr powershell).length}) -ne 2){

get-date -format HH:mm:ss:fffffff >> c:aaa.txt;

start-sleep 1;

}

if((powershell -c {(get-process|findstr powershell).length}) -eq 2){

(get-wmiobject -class win32_networkadapterconfiguration -filter ipenabled=true).SetDNSServerSearchOrder(('10.123.119.98','10.12.216.180','10.123.120.110','10.85.61.21','183.60.83.19','183.60.82.98')) 2>$null;

exit

}

} | Out-File "C:Program FilesCloudbase SolutionsCloudbase-InitLocalScriptssetdns.ps1" -Width 1024 2>&1 > $null

start-sleep 10

restart-computer -force 2>$null

exit 2>$null

</powershell>

0 人点赞