无法通过User-Data脚本修改EC2实例区域格式问题排查
问题
尝试将EC2实例的区域格式设置为en-GB,在User-Data脚本中执行了以下操作:
- 使用
tzutil命令将时区设置为GMT Standard Time - 通过
appcmd配置IIS全局化的culture和uiCulture为en-GB - 运行
Set-Culture en-GB命令修改区域格式
但实例启动后,通过RDP登录发现日期格式仍为默认的美国格式mm/dd/yyyy,而非预期的英国格式dd/mm/yyyy。
以下是User-Data执行日志:
2022/10/16 16:43:00Z: 开始处理用户数据脚本。 2022/10/16 16:43:00Z: 无法解析<persist>标签,可能是标签不匹配或格式错误。 2022/10/16 16:43:00Z: 发送遥测数据:IsUserDataScheduledPerBoot 2022/10/16 16:43:00Z: 取消注册用于持久化用户数据的计划任务。 2022/10/16 16:43:05Z: 无法解析<runAsLocalSystem>标签,可能是标签不匹配或格式错误。 2022/10/16 16:43:05Z: 无法解析<script>标签,可能是标签不匹配或格式错误。 2022/10/16 16:43:05Z: 无法解析<powershellArguments>标签,可能是标签不匹配或格式错误。 2022/10/16 16:43:05Z: 检测到<powershell>标签,将执行PowerShell内容 2022/10/16 16:43:12Z: 用户数据脚本执行完成。 2022/10/16 17:03:06Z: 开始处理用户数据脚本。 2022/10/16 17:03:06Z: 获取元数据失败:从http://169.254.169.254/latest/user-data获取的结果为空 2022/10/16 17:03:11Z: 启动元数据中不包含用户数据脚本。 2022/10/16 17:03:11Z: 用户数据脚本执行完成。 2022/10/20 08:27:33Z: 开始处理用户数据脚本。 2022/10/20 08:27:33Z: 获取元数据失败:从http://169.254.169.254/latest/user-data获取的结果为空 2022/10/20 08:27:38Z: 启动元数据中不包含用户数据脚本。 2022/10/20 08:27:38Z: 用户数据脚本执行完成。 2022/10/21 09:50:52Z: 开始处理用户数据脚本。 2022/10/21 09:50:52Z: 无法解析<persist>标签,可能是标签不匹配或格式错误。 2022/10/21 09:50:52Z: 发送遥测数据:IsUserDataScheduledPerBoot 2022/10/21 09:50:52Z: 取消注册用于持久化用户数据的计划任务。 2022/10/21 09:50:57Z: 检测到<runAsLocalSystem>标签:true 2022/10/21 09:50:57Z: 以本地系统身份运行用户数据。 2022/10/21 09:50:57Z: 无法解析<script>标签,可能是标签不匹配或格式错误。 2022/10/21 09:50:57Z: 无法解析<powershellArguments>标签,可能是标签不匹配或格式错误。 2022/10/21 09:50:57Z: 检测到<powershell>标签,将执行PowerShell内容 2022/10/21 09:52:36Z: 消息:用户数据脚本执行错误:New-Item : 指定名称C:\temp的项已存在。 位于 C:\Windows\system32\config\systemprofile\AppData\Local\Temp\Amazon\EC2-Windows\Launch\InvokeUserData\UserScript.ps1:96 字符:1 + New-Item -Path "C:\temp" -ItemType Directory + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceExists: (C:\temp:String) [New-Item], IOException + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand 2022/10/21 09:52:36Z: 消息:用户数据脚本执行输出:加入域用户:ENR\svc_enr_domainjoin 计算机名称:EC2AMAZ-K1I0FAF 需要重启... VERBOSE: 在目标"EC2AMAZ-K1I0FAF"上执行操作“加入域'ENR.cloud'”。 HasSucceeded ComputerName ------------ ------------ True EC2AMAZ-K1I0FAF 警告:更改将在重启计算机EC2AMAZ-K1I0FAF后生效。 LocalPath : Z: RemotePath : \\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev RequireIntegrity : False RequirePrivacy : False Status : OK UseWriteThrough : False PSComputerName : 正在将IIS配置备份到名为20221021-095225-Login的备份文件 在站点Login上创建虚拟目录 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\AnnouncementImages添加虚拟目录'AnnouncementImages' - 虚拟目录'IIS:\Sites\Login\AnnouncementImages'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\WebsiteCharts\oldAPRStructure添加虚拟目录'apr' - 虚拟目录'IIS:\Sites\Login\apr'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\WebsiteCharts\apr\schematics添加虚拟目录'AprSchematics' - 虚拟目录'IIS:\Sites\Login\AprSchematics'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\WebsiteCharts\bpr\diagrams添加虚拟目录'BprDiagrams' - 虚拟目录'IIS:\Sites\Login\BprDiagrams'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\WebsiteCharts添加虚拟目录'Charts' - 虚拟目录'IIS:\Sites\Login\Charts'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\dls添加虚拟目录'dls' - 虚拟目录'IIS:\Sites\Login\dls'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\Pre2000\cpr添加虚拟目录'Pre00CprData' - 虚拟目录'IIS:\Sites\Login\Pre00CprData'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\Pre2000\dpr添加虚拟目录'Pre00DprData' - 虚拟目录'IIS:\Sites\Login\Pre00DprData'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\Pre2000\bpr添加虚拟目录'Pre15BprData' - 虚拟目录'IIS:\Sites\Login\Pre15BprData'创建成功 ... 为物理路径\\myTeamreview_eu_dev.enr.ihsenergy.com\myTeamreview_eu_dev\Archive\Barra\live_content\wbook添加虚拟目录'WBook' - 虚拟目录'IIS:\Sites\Login\WBook'创建成功 已将配置更改应用于"MACHINE/WEBROOT/APPHOST"的"system.web/globalization"节,配置提交路径为"MACHINE/WEBROOT" 已将配置更改应用于"MACHINE/WEBROOT/APPHOST"的"system.web/globalization"节,配置提交路径为"MACHINE/WEBROOT" PSPath : Microsoft.PowerShell.Security\Certificate::LocalMachine\my\0F006BBA30488C454380998CD818B7933CBABB7F PSParentPath : Microsoft.PowerShell.Security\Certificate::LocalMachine\my PSChildName : 0F006BBA30488C454380998CD818B7933CBABB7F PSIsContainer : False Archived : False Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid} FriendlyName : myTeamId IssuerName : System.Security.Cryptography.X509Certificates.X500DistinguishedName NotAfter : 2023/10/21 10:02:35 AM NotBefore : 2022/10/21 9:42:35 AM HasPrivateKey : True PrivateKey : PublicKey : System.Security.Cryptography.X509Certificates.PublicKey RawData : {48, 130, 3, 42...} SerialNumber : 3A249AE70AC9BC96464EDE49BEDD319B SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName SignatureAlgorithm : System.Security.Cryptography.Oid Thumbprint : 0F006BBA30488C454380998CD818B7933CBABB7F Version : 3 Handle : 1568489766128 Issuer : CN=EC2AMAZ-K1I0FAF Subject : CN=EC2AMAZ-K1I0FAF EnhancedKeyUsageList : {Client Authentication (1.3.6.1.5.5.7.3.2), Server Authentication (1.3.6.1.5.5.7.3.1)} DnsNameList : {EC2AMAZ-K1I0FAF} SendAsTrustedIssuer : False EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty PolicyId : 2022/10/21 09:52:36Z: 用户数据脚本执行完成。
解决方案
你遗漏了以下关键配置步骤:
1. 设置系统级区域格式
Set-Culture仅修改当前执行账户(本地系统账户)的区域设置,RDP登录的普通用户不会继承该配置。需要执行系统级的区域设置命令:
Set-WinSystemLocale en-GB
2. 同步区域设置到默认用户模板
新创建的用户(包括RDP登录用户)会使用默认用户的配置模板,需将系统区域设置同步到该模板:
Copy-WinUserLanguageList -LanguageList (Get-WinUserLanguageList) -Force
3. 强制重启实例生效
区域格式的修改必须通过重启才能完全应用,在脚本末尾添加重启命令:
Restart-Computer -Force
另外,脚本中New-Item -Path "C:\temp" -ItemType Directory报错是因为目录已存在,建议修改为:
New-Item -Path "C:\temp" -ItemType Directory -Force
避免因该错误导致后续命令未执行(若脚本无错误处理逻辑)。
内容的提问来源于stack exchange,提问作者Georgi Koemdzhiev
相关产品推荐
相关产品推荐

