在 powershell 中设置对象的多个属性
Set mutiple properties of an object in powershell
我想在 powershell 中为数据收集器集对象设置多个属性。我该怎么做,
这是我尝试失败的代码。
$hash_table=@{
DisplayName = "Test"
RootPath = "C:\Test"
Segment = -1
SegmentMaxDuration = 600
SegmentMaxSize = 0
SubdirectoryFormat = 1
}
$dcs = New-Object -COM Pla.DataCollectorSet @hash_table
错误详情:
New-Object : A parameter cannot be found that matches parameter name 'DisplayName'.
At line:9 char:45
+ $dcs = New-Object -COM Pla.DataCollectorSet @hash_table
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-Object], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
有没有更好的方法来一次设置所有必需的属性而不是一个一个地设置它们?
您不能像这样拼接对象属性,您当前的代码所做的是尝试将哈希表参数作为参数传递给 New-Object
,而不是传递给您尝试实例化的 COM 对象。您要做的是使用 -Property
参数来设置您在对象的哈希表中命名的属性。这应该适合你:
$hash_table=@{
DisplayName = "Test"
RootPath = "C:\Test"
Segment = -1
SegmentMaxDuration = 600
SegmentMaxSize = 0
SubdirectoryFormat = 1
}
$dcs = New-Object -COM Pla.DataCollectorSet -Property $hash_table
如果您想对 New-Object
参数使用 splatting,您的代码需要看起来更像这样:
$hash_table=@{
COMObject = 'Pla.DataCollectorSet'
Property = @{
DisplayName = "Test"
RootPath = "C:\Test"
Segment = -1
SegmentMaxDuration = 600
SegmentMaxSize = 0
SubdirectoryFormat = 1
}
}
$dcs = New-Object @hash_table
有关详细信息,请参阅 New-Object
上的 this example from Microsoft's documentation。
我想在 powershell 中为数据收集器集对象设置多个属性。我该怎么做,
这是我尝试失败的代码。
$hash_table=@{
DisplayName = "Test"
RootPath = "C:\Test"
Segment = -1
SegmentMaxDuration = 600
SegmentMaxSize = 0
SubdirectoryFormat = 1
}
$dcs = New-Object -COM Pla.DataCollectorSet @hash_table
错误详情:
New-Object : A parameter cannot be found that matches parameter name 'DisplayName'.
At line:9 char:45
+ $dcs = New-Object -COM Pla.DataCollectorSet @hash_table
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-Object], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
有没有更好的方法来一次设置所有必需的属性而不是一个一个地设置它们?
您不能像这样拼接对象属性,您当前的代码所做的是尝试将哈希表参数作为参数传递给 New-Object
,而不是传递给您尝试实例化的 COM 对象。您要做的是使用 -Property
参数来设置您在对象的哈希表中命名的属性。这应该适合你:
$hash_table=@{
DisplayName = "Test"
RootPath = "C:\Test"
Segment = -1
SegmentMaxDuration = 600
SegmentMaxSize = 0
SubdirectoryFormat = 1
}
$dcs = New-Object -COM Pla.DataCollectorSet -Property $hash_table
如果您想对 New-Object
参数使用 splatting,您的代码需要看起来更像这样:
$hash_table=@{
COMObject = 'Pla.DataCollectorSet'
Property = @{
DisplayName = "Test"
RootPath = "C:\Test"
Segment = -1
SegmentMaxDuration = 600
SegmentMaxSize = 0
SubdirectoryFormat = 1
}
}
$dcs = New-Object @hash_table
有关详细信息,请参阅 New-Object
上的 this example from Microsoft's documentation。