首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带条件的PSObject -Property

带条件的PSObject -Property
EN

Stack Overflow用户
提问于 2015-12-02 09:57:14
回答 2查看 2.3K关注 0票数 1

我想在我的代码的这一部分中添加一些条件:

代码语言:javascript
复制
$objInfos = New-Object PSObject -Property @{
                    Dossier = [string]"$($logs[0])"
                    "Taille totale" = [double]$logs[1]
                    "Categorie recherchee" = [double]$logs[2]
                    "Pourcentage" = [double]$logs[3]
                    "Date de dernier acces" = [DateTime]"$($logs[5])"
}

我需要每个案子都有条件,就像这样:

代码语言:javascript
复制
$objInfos = New-Object PSObject -Property @{
                    if ($test -eq 1){
                        Dossier = [string]"$($logs[0])"
                    }
                    "Taille totale" = [double]$logs[1]
                    "Categorie recherchee" = [double]$logs[2]
                    "Pourcentage" = [double]$logs[3]
                    "Date de dernier acces" = [DateTime]"$($logs[5])"
}

我试过这样做,但没有用

在散列文字中缺少'=‘操作符后面的键。

有人知道怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-02 10:10:24

您可以在单独的语句中创建Hashtable,用值填充它,然后将它传递给New-Object cmdlet。

代码语言:javascript
复制
$Hashtable = @{}
if ($test -eq 1){
    $Hashtable.Add('Dossier', [string]"$($logs[0])")
}
$Hashtable.Add("Taille totale", [double]$logs[1])
$Hashtable.Add("Categorie recherchee", [double]$logs[2])
$Hashtable.Add("Pourcentage", [double]$logs[3])
$Hashtable.Add("Date de dernier acces", [DateTime]"$($logs[5])")
$objInfos = New-Object PSObject -Property $Hashtable

如果希望将属性按与添加到Hashtable的元素相同的顺序排列,则需要使用OrderedDictionary而不是Hashtable

代码语言:javascript
复制
$Hashtable = New-Object System.Collections.Specialized.OrderedDictionary
票数 6
EN

Stack Overflow用户

发布于 2015-12-02 10:45:42

您可以按照@PetSerAl的建议,向属性哈希表添加条目:

代码语言:javascript
复制
$props = @{
  'Taille totale'         = [double]$logs[1]
  'Categorie recherchee'  = [double]$logs[2]
  'Pourcentage'           = [double]$logs[3]
  'Date de dernier acces' = [DateTime]$logs[5]
}

if ($test -eq 1) {
  $props['Dossier'] = "$($logs[0])"
}

$objInfos = New-Object PSObject -Property $props

您可以使用Add-Member作为@ as 444在对您的问题的评论中建议:

代码语言:javascript
复制
$objInfos = New-Object PSObject -Property @{
  'Taille totale'         = [double]$logs[1]
  'Categorie recherchee'  = [double]$logs[2]
  'Pourcentage'           = [double]$logs[3]
  'Date de dernier acces' = [DateTime]$logs[5]
}

if ($test -eq 1) {
  $objInfos | Add-Member -Type NoteProperty -Name 'Dossier' -Value "$($logs[0])"
}

或者,可以任意添加属性,但根据检查结果设置其值:

代码语言:javascript
复制
$objInfos = New-Object PSObject -Property @{
  'Dossier'               = if ($test -eq 1) {"$($logs[0])"} else {''}
  'Taille totale'         = [double]$logs[1]
  'Categorie recherchee'  = [double]$logs[2]
  'Pourcentage'           = [double]$logs[3]
  'Date de dernier acces' = [DateTime]$logs[5]
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34039714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档