我在企业环境中担任管理员,绝大多数系统都运行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。
在环境中如何才能完成此功能?替代数据存储想法也是可以接受的。我感谢你们提供的任何帮助。
谢谢, 泰勒
答案 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