Get-CtxConfigurationLogReport使用中文数据库时出错

XenApp在启用配置日志记录后,如果需要查看,由两种方法,一种是通过AppCenter中的历史记录来查看。另外一种就是通过Powershell来查看。由于使用了中文版的数据库,结果在通过PS命令查看的时候,一直报错:

get-ctxconfigurationlogreport-error其实关键信息就在从字符串转换日期和/或时间时,转换失败。以下是详细信息:

而通过AppCenter访问正常:

appcenter-history

 

同时,我们还发现,如果后台数据库使用英文的就不会出错,再联系到之前报时间转换错误。那么可以肯定的时,由于中文数据的时间格式和powershell cmdlet期望的时间格式不一致,导致出错。而AppCenter可以处理中文,Powershell却不行,基本可以确定,Powershell cmdlet使用了硬编码,导致时间格式转换失败。而联系英文数据库没有问题,最终发现,powershell cmdlet使用了en-us硬编码。

既然PS这边没法修改,那么只能在数据库这边动脑筋了,经过研究,后来发现可以修改数据库登录名的默认语言,所以,我们只要把对应的用户的登陆语言修改成english即可。或者修改整个服务器的locale也可以。但是由于可以直接修改登录用户的设置,那么这样可以保证了对数据库系统的最小影响。比如,我们可以单独为Powershell cmdlet查询配置日志记录建立一个数据库用户,并修改语言。

change-sqluser-locale

 

如上图,修改了默认语言后,再来运行PS命令,就可以了:

ps_get-ctxconfigurationlogreport_successful