将powershell的OrderedDictionary的所有值转换成字符串行并打印到日志文件

Convert all values of OrderedDictionary of the powershell to string line and print to the log file

我在将 PowerShell 的 OrderedDictionary 的值转换为字符串行时遇到了一些问题。我有以下哈希 table [OrderedDictionary]:

我尝试将值数据输出到字符串:

  for ($i = 0; $i -lt $DataResult.Count; $i++) {
        $DataResult["$i"].Values |
         ForEach-Object {
             Write-Output $_
            }
    }

但是不行,你能帮帮我吗

鉴于您的代码示例,我认为您有一组 [Ordered] 字典?如果是这样,您应该能够很容易地展开这些值:

#This is just demo data for my testing:
$Dictionaries = @(
    [Ordered]@{
        P1 = 'Something'
        P2 = 'SomethingElse'
    }
    [Ordered]@{
        P1 = 'Another'
        P2 = 'AnotherAnother'
    }
)

# Unroll the values:
$Values = $Dictionaries.Values

如果忽略演示数据,它实际上只有 1 行。 $Values 将是 [Object[]] 类型,其元素是其原始字符串类型。如果需要,您可以重新转换为字符串数组:

$Values = [String[]]$values

或者直接用展开指定:

# Unroll the values:
$Values = [String[]]$Dictionaries.Values

或类型约束变量:

# Unroll the values:
[String[]]$Values = $$Dictionaries.Values

注意:此转换也会将元素值转换为字符串。我将在所需的基础上进行。

我还要指出,您真的不需要 Write-Output 任何地方。首先,这已经隐含在正常的 PowerShell 操作中。其次,您不能通过管道传输传统的 For 循环(尽管您可以将其输出分配给一个变量)。无论如何,如果您的意图只是继续将其沿管道输送,您可以从上述任何示例中删除 $Values,PowerShell 将隐式地和本机地执行此操作。