PSObject -属性 有条件
PSObject -Property with conditions
我想在我的这部分代码中加入条件:
$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])"
}
我需要每个案例都有条件,例如:
$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])"
}
这个方法我试过了,没用
Missing '=' operator after key in hash literal.
有人知道怎么做吗?
您可以在单独的语句中创建 Hashtable
,用值填充它,然后将其传递给 New-Object
cmdlet。
$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
:
$Hashtable = New-Object System.Collections.Specialized.OrderedDictionary
您可以按照 的建议有条件地将条目添加到 属性 哈希表:
$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
作为 @arco444 在您的问题的评论中建议的:
$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])"
}
或者您可以添加 属性 无论如何,但根据您的检查结果设置其值:
$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]
}
我想在我的这部分代码中加入条件:
$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])"
}
我需要每个案例都有条件,例如:
$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])"
}
这个方法我试过了,没用
Missing '=' operator after key in hash literal.
有人知道怎么做吗?
您可以在单独的语句中创建 Hashtable
,用值填充它,然后将其传递给 New-Object
cmdlet。
$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
:
$Hashtable = New-Object System.Collections.Specialized.OrderedDictionary
您可以按照
$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
作为 @arco444 在您的问题的评论中建议的:
$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])"
}
或者您可以添加 属性 无论如何,但根据您的检查结果设置其值:
$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]
}