如何存储此数据以供将来使用而不是JSON? (Powershell V2)

时间:2014-01-29 13:00:25

标签: json windows-7 powershell-v2.0 powershell-v3.0

我在企业环境中担任管理员,绝大多数系统都运行Windows 7,令我感到懊恼...... Powershell V2。

我一直在运行Powershell V3的工作站上开发一个相当冗长的脚本,但是一直在验证与V2环境的兼容性,但是我遇到了一个我似乎无法解决的问题。

脚本本身运行一些功能都很好,并将它们的输出存储在一系列变量中,我需要将这些变量存储在一个数据文件中供以后使用。在一个完美的世界中,我将所有内容升级到Powershell v3并使用JSON,因为它完全符合我的目标。

$table = [ordered]@{
Workstation = $global:MachineName
Date = $date = get-date -format MM-dd-yyyy
OSArchitecture = $global:OSArchitecture.OSArchitecture
HBSSAccess = $global:HBSS_Access
SCCMAccess = $global:SCCM_Access
WMIHealth = $global:WMI_Health
SCCMHealth = $global:SCCM_Health
WMIRepairAttempt = $global:WMI_Repair_Attempt
SCCMRepairAttempt = $global:SCCM_Repair_Attempt
WMIRepairResult = $global:WMI_Repair_Result
SCCMRepairResult = $global:SCCM_Repair_Result
}

[PSCustomObject]$table | ConvertTo-json | out-file -FilePath "C:\users\public\scriptdata\storage.json"

现在,这就是它在Powershell V3中运行的方式,它完全符合我的要求,后来由服务器编目检查每台PC的数据文件并使用以下内容转换回可用对象:

$Data = Get-Content -Path "C:\users\public\scriptdata\storage.json" | out-string | ConvertFrom-Json

这再次在Powershell V3上运行得很好。我的理解是,Powershell V2中既没有[Ordered]也没有ConvertTo-JSON / ConvertFrom-JSON。

在环境中如何才能完成此功能?替代数据存储想法也是可以接受的。我感谢你们提供的任何帮助。

谢谢, 泰勒

1 个答案:

答案 0 :(得分:0)

PS2支持哈希表,因此您可以将数据转换为CSV并进行即时排序。从表定义中删除[ordered]

$table = @{
Workstation = $global:MachineName
Date = $date = get-date -format MM-dd-yyyy
OSArchitecture = $global:OSArchitecture.OSArchitecture
HBSSAccess = $global:HBSS_Access
SCCMAccess = $global:SCCM_Access
WMIHealth = $global:WMI_Health
SCCMHealth = $global:SCCM_Health
WMIRepairAttempt = $global:WMI_Repair_Attempt
SCCMRepairAttempt = $global:SCCM_Repair_Attempt
WMIRepairResult = $global:WMI_Repair_Result
SCCMRepairResult = $global:SCCM_Repair_Result
}

然后你可以导出数据

$table.getEnumerator() | sort key | select key,value| Export-Csv "C:\users\public\scriptdata\storage.csv" -NoTypeInformation

并导入它并像在csv上一样操作

PS U:\Scripts> $Data = Import-Csv "C:\users\public\scriptdata\storage.csv"

PS U:\Scripts> $Data

Key                                                         Value
---                                                         -----
Date                                                        01-29-2014
HBSSAccess
OSArchitecture
SCCMAccess
SCCMHealth
SCCMRepairAttempt
SCCMRepairResult
WMIHealth
WMIRepairAttempt
WMIRepairResult
Workstation