Custom Object Export Array и добавление в массив - PullRequest
0 голосов
/ 10 сентября 2018

Мне трудно понять, чего мне не хватает. Я пытаюсь сделать 2 вещи, я пытаюсь создать собственный массив объектов, а затем добавить в массив пользовательских объектов с большим количеством данных. Затем, наконец, экспортируйте полный массив пользовательских объектов в CSV. Я знаю, что я близко, но все, что я получаю, это "Объект" для массива пользовательских объектов.

Объект появляется в целости и сохранности в Add-ArraySiteDefaultvsUserSettings, и когда он покидает эту функцию, но тогда я не могу построить объект, и он будет полезен.

    Function Add-DefaultsValidation 
{
    #New-Object psobject -Property @{IdenTity = '';SiteDefault = '';UserSetting = '';IssueAlert =''}
    $DefaultsObject = New-Object Object -TypeName PSObject
    Add-Member -MemberType NoteProperty -Name SiteCode -Value "" -InputObject $DefaultsObject  
    Add-Member -MemberType NoteProperty -Name Identity -Value "" -InputObject $DefaultsObject
    Add-Member -MemberType NoteProperty -Name OU -Value "" -InputObject $DefaultsObject    
    Add-Member -MemberType NoteProperty -Name SiteDefault -Value "" -InputObject $DefaultsObject  
    Add-Member -MemberType NoteProperty -Name UserSetting -Value "" -InputObject $DefaultsObject  
    Add-Member -MemberType NoteProperty -Name IssueAlert -Value "" -InputObject $DefaultsObject  
    $DefaultsObject
}

Function Add-ArraySiteDefaultvsUserSettings
{
    Param ( $OU, $Identity, $SiteCode, $SiteDefaultValue, $UserCurrentSettings, $AlertType )

    #SiteDefaultvsUserSettings
    [array]$DefaultvsUserSettings = @()
    $addObject = Add-DefaultsValidation
    $addObject.SiteCode = $SiteCode
    $addObject.Identity = $Identity
    $addObject.OU = $OU
    $addObject.SiteDefault = $SiteDefaultValue
    $addObject.UserSetting = $UserCurrentSettings
    $addObject.IssueAlert = $AlertType
    $DefaultvsUserSettings += $addObject
    #Write-Output $SiteDefaultvsUserSettings

    Return $DefaultvsUserSettings
}

foreach ($SkypeSiteDefault in $SkypeSiteDefaults)
{

    if ($SkypeSiteDefault.OU -ne $null)
    {
        $SkypeSiteDefault.'Site Code'
        $SkypeSiteDefault.RegistrarPool
            $SkypeUsersRegistrarInvalid = Get-CsUser -ResultSize unlimited -ou $SkypeSiteDefault.OU | Where-Object {$_.RegistrarPool.FriendlyName -notlike "*$($SkypeSiteDefault.RegistrarPool)*"} | Select SamAccountName, Registrarpool 
            if ($SkypeUsersRegistrarInvalid.count -ne 0)
            {
                foreach ($SkypeUserRegistrarInvalid in $SkypeUsersRegistrarInvalid)
                {
                    $myOU = $SkypeUserRegistrarInvalid.Identity | ForEach-Object{($_ -split "," | Select-Object -Skip 2)} 
                    $UserOU = $myOU -join ','

                    [array]$SkypeUserInvalidObjectAttribute = @()
                    $SkypeUserInvalidObjectAttribute = 
                        Add-ArraySiteDefaultvsUserSettings `
                            -SiteCode $SkypeSiteDefault.'Site Code' `
                            -Identity $SkypeUserRegistrarInvalid.SamAccountName `
                            -OU $UserOU `
                            -SiteDefaultValue $SkypeSiteDefault.RegistrarPool `
                            -UserCurrentSettings $SkypeUserRegistrarInvalid.Registrarpool.FriendlyName `
                            -AlertType 'INVALID - REGISTRAR POOL' 


                    If ($SkypeUsersInvalidObjectAttribute.count -eq 0)
                    {
                        $SkypeUsersInvalidObjectAttribute = $SkypeUserInvalidObjectAttribute
                    }
                    else
                    {
                        $SkypeUsersInvalidObjectAttribute += $SkypeUserInvalidObjectAttribute
                    }

                }
            }


            #Get-CsUser -ResultSize unlimited -ou $SkypeSiteDefault.OU | Where-Object {$_.Registrarpool -ne $SkypeSiteDefault.RegistrarPool} | Select SamAccountName, Registrarpool


        $SkypeSiteDefault.'Site Code'
        $SkypeSiteDefault.'Dial Plan'

        $SkypeSiteDefault.'Site Code'
        $SkypeSiteDefault.'Voice Policy'

        Write-Host ''
        Write-Host ''

    }
}

$SkypeUsersInvalidObjectAttribute | Export-CSV "C:\Scriptout\Test.csv"

1 Ответ

0 голосов
/ 10 сентября 2018

Пэрриш - Большое спасибо за ваш ответ: Класс - это именно то решение, которое мне было нужно.

    Class ObjectCompare
{
    [String] $SiteCode
    [String] $Identity
    [String] $OU
    [String] $SiteDefault
    [String] $UserSetting
    [String] $IssueAlert
}


Function Add-ArraySiteDefaultvsUserSettings
{
    Param ( $OU, $Identity, $SiteCode, $SiteDefaultValue, $UserCurrentSettings, $AlertType )

    #SiteDefaultvsUserSettings
    [array]$DefaultvsUserSettings = @()
    $addObject = New-Object ObjectCompare # Add-DefaultsValidation
    $addObject.SiteCode = $SiteCode
    $addObject.Identity = $Identity
    $addObject.OU = $OU
    $addObject.SiteDefault = $SiteDefaultValue
    $addObject.UserSetting = $UserCurrentSettings
    $addObject.IssueAlert = $AlertType
    $DefaultvsUserSettings += $addObject
    #Write-Output $SiteDefaultvsUserSettings

    Return $DefaultvsUserSettings
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...