powershell - 使用 powershell 将整数存储在自定义对象中

标签 powershell object types

我喜欢在 powershell 中使用如下结构。它们使跟踪 6 个月后发生的事情变得更加容易。

$processConfig = New-Object -TypeName psobject
$processConfig | Add-Member -MemberType NoteProperty -Name StartDate -Value ($startofweek)
$processConfig | Add-Member -MemberType NoteProperty -Name StartDateStr -Value (Get-Date $processConfig.StartDate -Format "yyyyMMdd HH:mm:ss")
$processConfig | Add-Member -MemberType NoteProperty -Name EndDate -Value ($endofweek)
$processConfig | Add-Member -MemberType NoteProperty -Name EndDateStr -Value (Get-Date     $processConfig.EndDate -Format "yyyyMMdd HH:mm:ss")
$processConfig | Add-Member -MemberType NoteProperty -Name TargetDir -Value  "C:\Scripts\out\"

$dbConfig = New-Object -TypeName psobject
$dbConfig | Add-Member -MemberType NoteProperty -Name Server -Value "server.address"
#etc

但是,我终其一生都无法弄清楚如何将普通 int 存储为属性。我尝试了一些不同的东西。

需要成员类型
$processConfig | Add-Member -TypeName System.Int32 -Name TrimLeadingLines -Value 3

那么为什么 Property 是参数的建议值呢?
$processConfig | Add-Member -MemberType Property -TypeName System.Int32 -Name TrimLeadingLines -Value 3

Add-Member : Cannot add a member with type "Property". Specify a different type for the MemberTypes parameter.
At C:\Scripts\kh_tca_export_ftps.ps1:80 char:18
+ ... essConfig | Add-Member -MemberType Property -TypeName System.Int32 -N ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Add-Member], InvalidOperationException
    + FullyQualifiedErrorId : CannotAddMemberType,Microsoft.PowerShell.Commands.AddMemberCommand

横向思考,但有点狡猾
$processConfig | Add-Member -MemberType ScriptProperty -TypeName System.Int32 -Name TrimLeadingLines -Value { return 3 }

我不想存储然后需要转换的字符串表示。是的,我可以使用 $var。是否有一种简单直接的方法可以在 Powershell 自定义对象中存储 Integer/Int32?

最佳答案

我一直都是这样做的[int]3如下所示。当我需要在对象中存储 int 时效果很好。

$processConfig | Add-Member -MemberType NoteProperty -Name TrimLeadingLines -Value $([int]3)

这将返回 Int32作为属性类型。
PS C:\> $processConfig.TrimLeadingLines.GetType()

IsPublic IsSerial Name  BaseType        
-------- -------- ----  --------        
True     True     Int32 System.ValueType

关于powershell - 使用 powershell 将整数存储在自定义对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58404413/

相关文章:

sql-server - 已安装 SQL,但 powershell 未获取 sqlps 命令(如 invoke-sqlcmd)

powershell - 将具有特定扩展名的文件 move 到更高层次的文件夹中

java - 使用 for 循环和对象方法在 Java 中为对象数组赋值时遇到问题

c++ - 将大数字类型转换为较小类型

powershell - 使用 dtutil 部署 SSIS 包

c# - 如何扩展二进制PowerShell模块中的路径?

javascript - 如何在javascript中获取对象的名称?

javascript - 我不清楚JavaScript函数/对象的结构

c# - 将公共(public)属性限制为 List<Type> 中的特定类型

java - 我应该如何将小数部分分配给来自 Talend 中 tFileInputPositional 的 BigDecimal?