userdata实际是支持cmd的,不是只支持powershell,还支持python、bash(前提是你镜像里有python、bash环境了)。
这本应该是腾讯云官网文档要写的内容,结果官网文档不完善,我自己花了大量时间精力帮完善了
- | Batch批处理程序 | PowerShell脚本 |
---|---|---|
格式 | 以“rem cmd”开头且作为首行,且前面不能有空格。或者<script> 这里写代码 </script> | 以“#ps1”开头且作为首行,且前面不能有空格。或者<powershell> 这里写代码 </powershell> |
限制 | 不能超过16KB | 不能超过16KB |
userdata powershell代码中尽可能不要出现中文,如需使用中文,中文字符应按Unicode码处理,比如
userdata cmd代码不支持中文(阿里云、腾讯云等凡是cloudinit那一套的都是如此),如果要用中文,需要通过cmd.exe /c c:\xxx.bat这种方式来调用,把相关代码放到c:\xxx.bat中,比如
#ps1
wget http://windows-1251783334.cos.ap-shanghai.myqcloud.com/115.159.148.149/ceshi.bat -Outfile c:\ceshi.bat
cmd.exe /c c:\ceshi.bat >> c:\init.log 2>&1
https://cloudbase-init.readthedocs.io/en/1.1.2/userdata.html
https://cloudbase-init.readthedocs.io/en/latest/userdata.html
rem cmd
这里写代码
例如
rem cmd
echo aaa>c:\ceshi.txt
上述代码base64编码后的字符串是
cmVtIGNtZAplY2hvIGFhYT5jOlxjZXNoaS50eHQ=
或者
<script>
这里写代码
</script>
例如
<script>
echo bbb>c:\ceshi.txt
</script>
上述代码base64编码后的字符串是
PHNjcmlwdD4KZWNobyBiYmI+YzpcY2VzaGkudHh0Cjwvc2NyaXB0Pg==
#ps1
这里写代码
例如
#ps1
Get-WmiObject -Class Win32_volume -Filter 'DriveType=5' |Set-WmiInstance -Arguments @{DriveLetter='Z:'} 2>&1
$Path = "C:\Firefox-latest.exe";
(new-object System.Net.WebClient).DownloadFile("http://download-ssl.firefox.com.cn/releases-sha2/stub/official/zh-CN/Firefox-latest.exe",$Path);
Start-Process -FilePath $Path -Args "-ms /MaintenanceService=false /DesktopShortcut=true"
start-sleep -s 60
Remove-Item $Path
上述代码base64编码后的字符串是
I3BzMQpHZXQtV21pT2JqZWN0IC1DbGFzcyBXaW4zMl92b2x1bWUgLUZpbHRlciAnRHJpdmVUeXBlPTUnIHxTZXQtV21pSW5zdGFuY2UgLUFyZ3VtZW50cyBAe0RyaXZlTGV0dGVyPSdaOid9ICAyPiYxCiRQYXRoID0gIkM6XEZpcmVmb3gtbGF0ZXN0LmV4ZSI7CihuZXctb2JqZWN0IFN5c3RlbS5OZXQuV2ViQ2xpZW50KS5Eb3dubG9hZEZpbGUoImh0dHA6Ly9kb3dubG9hZC1zc2wuZmlyZWZveC5jb20uY24vcmVsZWFzZXMtc2hhMi9zdHViL29mZmljaWFsL3poLUNOL0ZpcmVmb3gtbGF0ZXN0LmV4ZSIsJFBhdGgpOwpTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAkUGF0aCAtQXJncyAiLW1zIC9NYWludGVuYW5jZVNlcnZpY2U9ZmFsc2UgL0Rlc2t0b3BTaG9ydGN1dD10cnVlIgpzdGFydC1zbGVlcCAtcyA2MApSZW1vdmUtSXRlbSAkUGF0aA==
或者
<powershell>
这里写代码
</powershell>
例如
<powershell>
Get-WmiObject -Class Win32_volume -Filter 'DriveType=5' |Set-WmiInstance -Arguments @{DriveLetter='Z:'} 2>&1
$Path = "C:\Firefox-latest.exe";
(new-object System.Net.WebClient).DownloadFile("http://download-ssl.firefox.com.cn/releases-sha2/stub/official/zh-CN/Firefox-latest.exe",$Path);
Start-Process -FilePath $Path -Args "-ms /MaintenanceService=false /DesktopShortcut=true"
start-sleep -s 60
Remove-Item $Path
</powershell>
上述代码base64编码后的字符串是
PHBvd2Vyc2hlbGw+CkdldC1XbWlPYmplY3QgLUNsYXNzIFdpbjMyX3ZvbHVtZSAtRmlsdGVyICdEcml2ZVR5cGU9NScgfFNldC1XbWlJbnN0YW5jZSAtQXJndW1lbnRzIEB7RHJpdmVMZXR0ZXI9J1o6J30gIDI+JjEKJFBhdGggPSAiQzpcRmlyZWZveC1sYXRlc3QuZXhlIjsKKG5ldy1vYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovL2Rvd25sb2FkLXNzbC5maXJlZm94LmNvbS5jbi9yZWxlYXNlcy1zaGEyL3N0dWIvb2ZmaWNpYWwvemgtQ04vRmlyZWZveC1sYXRlc3QuZXhlIiwkUGF0aCk7ClN0YXJ0LVByb2Nlc3MgLUZpbGVQYXRoICRQYXRoIC1BcmdzICItbXMgL01haW50ZW5hbmNlU2VydmljZT1mYWxzZSAvRGVza3RvcFNob3J0Y3V0PXRydWUiCnN0YXJ0LXNsZWVwIC1zIDYwClJlbW92ZS1JdGVtICRQYXRoCjwvcG93ZXJzaGVsbD4=
#!/usr/bin/env python
这里写代码
例如
#!/usr/bin/env python
import sys
sys.stdout = open('c:\\output.txt', 'w')
print('hello')
sys.stdout.close()
上述代码base64编码后的字符串是
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCmltcG9ydCBzeXMKc3lzLnN0ZG91dCA9IG9wZW4oJ2M6XFxvdXRwdXQudHh0JywgJ3cnKQpwcmludCgnaGVsbG8nKQpzeXMuc3Rkb3V0LmNsb3NlKCk=
#!/bin/bash
这里写代码
例如
#!/bin/bash
pwd > bashout.txt
date >> bashout.txt
上述代码base64编码后的字符串是
IyEvYmluL2Jhc2gKcHdkID4gYmFzaG91dC50eHQKZGF0ZSA+PiBiYXNob3V0LnR4dA==
默认位置是/cygdrive/c/windows/system32/
未指定路径的话,bashout.txt的位置是一般是c:\windows\system32\bashout.txt
指定路径的话,用cd ../../回退到c盘根目录,ceshi123.txt的位置是c:\ceshi123.txt,例如
#!/bin/bash
cd ../../
pwd > ceshi123.txt
date >> ceshi123.txt
上述代码base64编码后的字符串是
IyEvYmluL2Jhc2gKY2QgLi4vLi4vCnB3ZCA+IGNlc2hpMTIzLnR4dApkYXRlID4+IGNlc2hpMTIzLnR4dA==
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有