Попытка увидеть, есть ли лучший способ восстановить объекты - PullRequest
0 голосов
/ 06 июля 2018

Единственный способ, которым я знаю, - это добавить много кода для создания пользовательского объекта для размещения и передачи моих значений. Я надеялся на более эффективный путь и искал предложения.

Есть две части, которые я пытаюсь выяснить: Логика та же, что и ниже, просто разные команды.

  1. Объект A - возвращает несколько результатов в него, как говорят сами Get-ADUser -resultsize 10 команда.
    1a. Для завершения части 1 в цикле foreach Объекта A. Я хочу: $MyObjA += Object A (Individual) из цикла foreach.

  2. , чтобы добавить к сложности (может быть)
    2а. Я хочу (Объект A) от Get-ADUser до левого Соединения на выходе (Объект B) Get-Mailbox Объединение всех его свойств для и в дублировании Объекта A. Таким образом, записи покажут Объект A и Объект B.

Теперь я использовал только Get-ADUser и Get-Mailbox в приведенном выше опросе, потому что это команды, которые все знают. Это сказанное, если бы я использовал те команды, что я пытаюсь сделать, мне не нужно было бы. Поэтому, пожалуйста, научите меня, как лучше всего обращаться с объектами так, как я хочу.

Реальная проблема ниже работает с UDM Pro по https://enoten.com/.

Их объекты не так дружелюбны, как хотелось бы, но это все есть. Моей конечной целью является создание функций для разбивки веб-сайта до тех пор, пока функции не сообщат мне доступные номера и кому назначен номер. Я на полпути там. Я действительно надеюсь, что мне не нужно создавать собственный объект или, по крайней мере, так, как я знаю.
Каждая функция строится на основе предыдущих функций. Моя текущая проблема в 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
}

1 Ответ

0 голосов
/ 06 июля 2018

Функция, созданная Стефаном ван Гуликом в 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...