【问题标题】:ConvertFrom-StringData fails casting to HashtableConvertFrom-StringData 无法转换为 Hashtable
【发布时间】:2016-05-23 23:31:53
【问题描述】:

我只是尝试调整 the scripting guy's example 以从文本文件中读取数据并使用 ConvertFrom-StringData 解析哈希表:

$PSVersionTable.PSVersion;

[String] $loginsFileName = "$HOME\Logins.txt";

Get-Content $loginsFileName;

[Hashtable] $logins = Get-Content -Path $loginsFileName | ConvertFrom-StringData;

Write-Host got $logins.count lines from $loginsFileName;
$logins.GetEnumerator() | Sort-Object Name;

我搞砸了:

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      -1     -1      

Lisa=GanzGeheim
Susanne=ganzgeheim
Fritz=geheim
Hans=Geheim

Der Wert "System.Object[]" vom Typ "System.Object[]" kann nicht in den Typ "System.Collections.Hashtable" konvertiert werden.
In Zeile:11 Zeichen:1
+ [Hashtable] $logins = Get-Content -Path $loginsFileName | ConvertFrom-StringData ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException

got 0 lines from E:\Users\Christian\Logins.txt

我的猜测:管道出了问题。我试图强调 Get-Content 通过包含 (Get-Content -Path $loginsFileName) 提供了一个数组——没有任何改进。有人可以给我一些提示吗?

【问题讨论】:

    标签: arrays string powershell hashtable


    【解决方案1】:

    很抱歉之前误导了您。您遇到的问题是,由于Get-Content,您得到了一组单键哈希表。对于我认为您正在寻找的内容,您应该将文件作为一个字符串读取。假设您至少拥有 PowerShell v3:

    $logins = Get-Content -Path $loginsFileName -Raw | ConvertFrom-StringData;
    

    这是你得到一个哈希表,就像一个哈希表数组一样。由于 PowerShell 对输出进行了很好的分组,因此这让我不时感到惊讶。

    -Raw 是 3.0 的一个特性。如果您无法访问 3.0,那么这些解决方案中的任何一个都足够了。

    $logins = Get-Content -Path $loginsFileName | Out-String | ConvertFrom-StringData;
    $logins = ((Get-Content -Path $loginsFileName) -join "`r`n") | ConvertFrom-StringData;
    

    【讨论】:

    • 如果您不能使用-Raw 开关,您应该可以使用(Get-Content -Path $loginsFileName) -Join "rn" 来获得相同的结果。
    • @TheMadTechnician 我想知道在什么时候我应该停止提及 2.0
    • 没关系,因为只要你停下来,8分钟后你就会发现有人在使用它。我想当 Win7 停止支持时会是安全的,因为我认为过去所有默认使用 PowerShell 3 的东西(除了 Vista,我们真的关心 Vista 吗?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2021-07-19
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多