如何自动获取时区详情及夏令时信息?PowerShell脚本报错求助
PowerShell批量查询服务器时区脚本错误解决
错误原因
报错源于Write-Host "Time zone details for $server:"这行代码:PowerShell会将$server:识别为驱动器引用语法(如C:、HKCU:),而非变量$server后追加冒号,导致变量解析失败。
修复方案
方案1:用${}明确变量边界
通过${server}包裹变量名,让PowerShell准确识别变量范围:
$servers = "server1", "server2", "server3" # 替换为目标服务器名称 foreach ($server in $servers) { Write-Host "Time zone details for ${server}:" $timezone = Get-WmiObject -Class Win32_TimeZone -ComputerName $server $timezone | Select-Object Caption, StandardName, DaylightName, Bias Write-Host "" }
方案2:使用格式化字符串
通过-f格式化运算符拼接字符串,避免变量与特殊字符冲突:
$servers = "server1", "server2", "server3" # 替换为目标服务器名称 foreach ($server in $servers) { Write-Host ("Time zone details for {0}:" -f $server) $timezone = Get-WmiObject -Class Win32_TimeZone -ComputerName $server $timezone | Select-Object Caption, StandardName, DaylightName, Bias Write-Host "" }
推荐优化(可选)
在PowerShell 5.1及以上版本,推荐用Get-CimInstance替代已被弃用的Get-WmiObject,兼容性和性能更好:
$servers = "server1", "server2", "server3" # 替换为目标服务器名称 foreach ($server in $servers) { Write-Host "Time zone details for ${server}:" $timezone = Get-CimInstance -Class Win32_TimeZone -ComputerName $server $timezone | Select-Object Caption, StandardName, DaylightName, Bias Write-Host "" }
内容的提问来源于stack exchange,提问作者Iman Jafari
相关产品推荐
相关产品推荐

