IF - 散列文字中的键后缺少“=”运算符

IF - Missing '=' operator after key in hash literal

您好,我收到错误消息“哈希文字中的键后缺少‘=’运算符。”在 IF 语句上,我哪里错了

$Nests | ForEach-Object {
      $RecordMetrics = [pscustomobject]@{
            key = $_.key
            count = $_.doc_count
            if (key -like 'CBT99*') 
            {
              bo = 'CBT'
              SiteID = 1972
            }
           elseif
           {
            boperator = $map[$_.key.TrimEnd("1","2","3","4","5","6","7","8","9","0","-") ].boperator
            SiteID = $map[$_.key.TrimEnd("1","2","3","4","5","6","7","8","9","0","-") ].SiteID
           }
        }}

你不能像那样将条件语句放在哈希表文字的中间。

您必须先创建 hashtable/dictionary,然后根据您的条件逻辑填充相关键:

$Nests | ForEach-Object {
    # create dictionary with initial properties
    $properties = [ordered]@{
        key = $_.key
        count = $_.doc_count
        Host = ''
        OperatorName = ''
    }

    # conditionally add remaining properties
    if ($_.key -like 'CBT99*') {
        $properties['bo'] = 'CBT'
        $properties['SiteID'] = 1972
    }
    else {
        $properties['boperator'] = $map[$_.key.TrimEnd("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-") ].boperator
        $properties['SiteID'] = $map[$_.key.TrimEnd("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-") ].SiteID
    }

    # convert to custom object
    $RecordMetrics = [pscustomobject]$properties
}