处理来自C#的Get-EventLog和时区

时间:2014-01-06 01:18:48

标签: powershell-remoting

我通过Powershell Remoting连接到远程计算机,并尝试在特定日期时间之后检索事件日志条目。问题是我从不确定服务器所在的时区甚至是什么语言环境......我的“after”参数是UTC。找到并将正确的时间戳传递给Get-EventLog函数的最有效方法是什么,然后检索带有UTC时间戳的日志实体?

这是一个代码示例。 “after”参数具有基于UTC的日期。

                        using (var cmd = PowerShell.Create().AddCommand("get-eventlog"))
                        {
                            cmd.RunspacePool = pool;
                            cmd.AddParameter("-LogName", logName);
                            cmd.AddParameter("-After", after);

                            var result = cmd.Invoke();
                            foreach (var sample in result.Where(n => n.Properties != null && n.Properties.Any()))
                            {
                                var dentry = sample as dynamic;
                                var newEntry =
                                    new PowershellEventLogEntry
                                    {
                                        Channel = logName,
                                        Category = dentry.Category,
                                        CategoryNumber = dentry.CategoryNumber,
                                        Data = dentry.Data,
                                        EntryType = dentry.EntryType,
                                        EventId = dentry.EventId,
                                        MachineName = dentry.MachineName,
                                        Message = dentry.Message,
                                        Source = dentry.Source,
                                        Timestamp = dentry.TimeGenerated
                                    };

1 个答案:

答案 0 :(得分:1)

您可以使用DateTime对象上的ToUniversalTime和ToLocalTime方法在两者之间进行转换。