我正在运行此命令获取所有Activesync用户的列表,并将其导出到C:\ activesync.csv
Get-ActiveSyncDevice | Get-ActiveSyncDeviceStatistics | sort-object status, devicetype , lastsyncattempttime | ft FirstSyncTime ,LastPolicyUpdateTime ,LastSyncAttemptTime ,LastSuccessSync , DeviceType , DeviceID, DeviceAccessState, Identity -a | Export-Csv c:\activesync.csv
问题是,如果我省略尾部| c:\activesync.csv ,CSV数据与控制台显示不匹配 | c:\activesync.csv …其中显示的数据和列不匹配。
这是一个在PowerShell中的错误?
需要记住的是,PowerShell中的所有内容都是一个对象。 在使用Format-Table时,输出是一个格式化对象,这就是传递到CSV中的内容。 如果您将Format-Table命令的结果传送给Get-Member,您将会看到我的意思。
Get-ActiveSyncDevice | Get-ActiveSyncDeviceStatistics | sort-object status, devicetype , lastsyncattempttime | Format-Table FirstSyncTime ,LastPolicyUpdateTime ,LastSyncAttemptTime ,LastSuccessSync , DeviceType , DeviceID, DeviceAccessState, Identity -a | Get-Member
其输出将是各种格式化对象的一系列描述。
Format-Table非常适合在控制台会话中创build输出或将格式化的输出发送到文本文件(使用out-file),但是如果我们将Format-Table更改为Select-Object,那么您的CSV文件将更多地满足您的期望。
Get-ActiveSyncDevice | Get-ActiveSyncDeviceStatistics | sort-object status, devicetype , lastsyncattempttime | select FirstSyncTime ,LastPolicyUpdateTime ,LastSyncAttemptTime ,LastSuccessSync , DeviceType , DeviceID, DeviceAccessState, Identity | Export-Csv c:\activesync.csv
(注意,对于长pipe道,pipe道字符可以用作续行。)