arrays - 尝试看看是否有更好的方法来重建对象
问题描述
我知道这样做的唯一方法是添加大量代码来构建自定义对象来放置我的值并传递。我希望有一种更有效的方法并寻求建议。
我想弄清楚两个部分:逻辑与下面相同,只是命令不同。
Get-ADUser -resultsize 10
对象 A - 从命令中返回多个结果 。
1a。要完成第 1 部分,在对象 A 的 foreach 循环中。我想:($MyObjA += Object A
个人)来自 foreach 循环。增加复杂性(也许)
2a。我希望(对象 A)Get-ADUser
从左到左加入(对象 B)的输出,Get-Mailbox
将它的所有属性组合到对象 A 并复制对象 A。因此记录将显示对象 A 和对象 B。
现在我只在上面的提问中使用了Get-ADUser
和Get-Mailbox
,因为这些是每个人都知道的命令。话虽这么说,如果我使用那些我想要做的命令,我就不需要了。所以请指导我了解以我想要的方式处理对象的最佳方式。
下面的真正问题是通过https://enoten.com/使用 UDM Pro 。
他们的物品不像我想的那么友好,但它就在那里。我的最终目标是构建功能来分解网站,直到功能可以告诉我可用的数字以及分配给谁的数字。我已经成功了一半。我真的希望我不必构建自定义对象,或者至少我知道如何构建。
每个功能都建立在以前的功能之上。我当前的问题是在Get-UDMRange_DIDBlocks_withAvailableNumbers
我试图做的程序中,组的单个对象CustomObject += Object A
在哪里。object A
我正在尝试建立一个相同对象的新组。
Function Get-UDMLocationNumberBlock_ID
{
Param ($SiteCode)
$Return = ''
#Get-UdmLocation | Where {$_.name -like '*012a*'}
#$Location = Get-UdmLocation | Where {$_.name -like "*$Sitecode*"}
$Location = Get-UdmLocation | Where {$_.code -like "*$Sitecode*"}
$Return = $Location.id
Return $Return
}
Function Get-UDMLocationNumberBlock_NAME
{
Param ($SiteCode)
$Return = ''
#Get-UdmLocation | Where {$_.name -like '*012a*'}
$Location = Get-UdmLocation | Where {$_.name -like "*$Sitecode*"}
#$Location = Get-UdmLocation | Where {$_.code -like "*$Sitecode*"}
$Return = $Location.Name
Return $Return
}
Function Get-UDMRange_DIDBlocks_byName
{
Param ($SiteCode)
$Return = ''
$Return = Get-UdmRmNumberBlock | where {$_.rangeName -like "*$Sitecode*"}
Return $Return
}
Function Get-UDMRange_DIDBlocks_byBlockNumber
{
Param ($DIDBlockNumber)
$Return = ''
$Return = Get-UdmRmNumberBlock | where {$_.phoneNumber -like "*$DIDBlockNumber*"}
Return $Return
}
Function Get-UDMRange_DIDBlocks_withAvailableNumbers
{
Param ($SiteCode)
$DIDBlocks = Get-UDMRange_DIDBlocks_byName -SiteCode $SiteCode
$AvailDIDBlocks = ''
foreach ($DIDBlock in $DIDBlocks)
{
if ($DIDBlock.usedQuantity -ne $DIDBlock.Quantity)
{
$AvailDIDBlocks += $DIDBlock
}
}
Return $AvailDIDBlocks
}
Function Get-UDMRangesNumbers_bySite
{
param ($Sitecode,[bool] $OnlyDIDBlocksWithAvailableNumbersInThem = $true)
if ($OnlyDIDBlocksWithAvailableNumbersInThem)
{ #excludes DID where the block of numbers are full
$AvailDIDBlocks = Get-UDMRange_DIDBlocks_withAvailableNumbers -SiteCode $Sitecode
}
else
{ #includes DID where the block of numbers are full
$AvailDIDBlocks = Get-UDMRange_DIDBlocks -SiteCode $Sitecode
}
foreach ($AvailDIDBlock in $AvailDIDBlocks)
{
$DIDNumbers = Get-UdmRmNumber | where {$_.phoneNumberBlockId -eq $AvailDIDBlock.id}
foreach ($DIDNumber in $DIDNumbers)
{
$DIDNumbersfromDIDBlocks += $DIDNumber
}
}
Return $DIDNumbersfromDIDBlocks
}
Function Get-UDMRangesNumbers_bySpecificDID
{
param ($DIDBlockNumber)
$AvailDIDBlocks = Get-UDMRange_DIDBlocks_byBlockNumber -DIDBlockNumber $DIDBlockNumber
foreach ($AvailDIDBlock in $AvailDIDBlocks)
{
$DIDNumbers = Get-UdmRmNumber | where {$_.phoneNumberBlockId -eq $AvailDIDBlock.id}
foreach ($DIDNumber in $DIDNumbers)
{
$DIDNumbersfromDIDBlocks += $DIDNumber
}
#$DIDNumbersfromDIDBlocks += Get-UdmRmNumber | where {$_.phoneNumberBlockId -eq $AvailDIDBlock.id}
}
Return $DIDNumbersfromDIDBlocks
}
解决方案
Stephane van Gulick 在http://powershelldistrict.com/how-to-combine-powershell-objects/创建的函数可能会对您有所帮助。
该函数的基本内容是:
Function Combine-Objects {
Param (
[Parameter(mandatory=$true)]$Object1,
[Parameter(mandatory=$true)]$Object2
)
$arguments = [Pscustomobject]@()
foreach ( $Property in $Object1.psobject.Properties) {
$arguments += @{$Property.Name = $Property.value}
}
foreach ( $Property in $Object2.psobject.Properties) {
$arguments += @{ $Property.Name= $Property.value}
}
$Object3 = [Pscustomobject]$arguments
return $Object3
}
推荐阅读
- javascript - 如何将单选按钮的属性设置为选中
- node.js - sequelize - 删除多行然后批量插入
- javascript - 使javascript变量可以为空
- c - Eclipse System-Workbench (Win 10 v4.6.3) 在包含 .h 文件时忽略大小写
- c - 从原始数据文件中提取 JPEG 的程序会产生分段错误(在 C 中)
- angularjs - ng-repeat 导致菜单不起作用
- python - 使用逗号分隔值从另一个列表生成列表
- php - 如何使用 curl 从其他网站搜索数据
- oracle - 如何使用 Oracle 的 Table API 使用 PL/SQL 将数据从一个表插入到另一个表?
- python - 如何在 python 中获取 SVG 图像的分辨率?