Need to convert System Object value to Array value

This topic contains 6 replies, has 2 voices, and was last updated by  Manojkumar Pandian 2 days, 22 hours ago.

  • Author
    Posts
  • #87752

    Manojkumar Pandian
    Participant

    I am writing script, where i have requirement to fetch the data as systemObject which has 20 Plus parameter and values, However i need to convert this to array so that i am able to compare it with another object.

    Example:

    
    $flag = @()
    
    $RLD_SPOT = get-spotenant
    
    for($i=0;$RLD_SPOT.Length;$i++)
    {
    
    if(($RLD_SPOT[$i]) -ne ($curentTenantValue[$i]))
    {
    
    $Flag += $currentTenantValue[i]
    
    }
    }
    

    Even though I have tried to convert this as Array, whole result stored in $rlds_spot[o]
    I am seeking your suggestion to convert this object by breaking each line and store it in array to process later

  • #87808

    Sam Boutros
    Participant

    line 12 should read [$i] at the end

    Here's an example that may help:

    This line provides an array of objects:
    (System.IO.FileInfo in this case but example applies to any object)

    Get-ChildItem .\ -File | select -First 10 
    

    To go through that array and execute a command or a script block against each element I can do something like:

    Get-ChildItem .\ -File | select -First 10 | foreach {
        if ($PSItem.Name -match 'ad') { $PSItem.FullName }
    }
    

    This will give me the files that have 'ad' in the name. Specifically the file's full name.
    Note that to get the output you simple dump it in the pipeline as in the script block { $PSItem.FullName }
    To retain that output in a variable, I can do:

    $myOutput = Get-ChildItem .\ -File | select -First 10 | foreach {
        if ($PSItem.Name -match 'ad') { $PSItem.FullName }
    }
    

    The script block { $PSItem.FullName } can be further developed to produce a more useful output as in:

    $myOutput = Get-ChildItem .\ -File | select -First 10 | foreach {
        if ($PSItem.Name -match 'ad') { 
            [PSCustomObject][Ordered]@{
                ComputerName = $env:COMPUTERNAME
                FileName = $PSItem.FullName 
            }
        }
    }
    

    In this case the output is an array of objects, where each element has a 'ComputerName' and 'FileName' properties:

    ComputerName FileName                                               
    ------------ --------                                               
    SAM2017E     \\10.0.0.11\e$\Install\Scripts\AD DS Deployment (2).txt
    SAM2017E     \\10.0.0.11\e$\Install\Scripts\AD DS Deployment.txt    
    SAM2017E     \\10.0.0.11\e$\Install\Scripts\AD-Bla1.ps1             
    SAM2017E     \\10.0.0.11\e$\Install\Scripts\AD-Deployment.txt       
    SAM2017E     \\10.0.0.11\e$\Install\Scripts\AD-PasswordExpired.ps1  
    SAM2017E     \\10.0.0.11\e$\Install\Scripts\AD1.ps1 
    
  • #87835

    Manojkumar Pandian
    Participant

    When i tried to read the value from Object it shows as count "1" but actually it has list of values, which i couldn't differentiate or split to store in the array, that is the main problem i am facing

    $RLD_SPOT = get-spotenant
    

    OR

    $jsonIfile = Get-content -Raw "C:\Scripts\SPOTenant.json"
    $curentTenantValue = ConvertFrom-Json -InputObject $jsonIfile 
    
    • #87869

      Sam Boutros
      Participant

      what's the output of

      $RLD_SPOT | gm
      
    • #88786

      Manojkumar Pandian
      Participant

      Thanks Sam, here is the get-members list

      
      Name                                       MemberType Definition                                                                                                         
      ----                                       ---------- ----------                                                                                                         
      Equals                                     Method     bool Equals(System.Object obj)                                                                                     
      GetHashCode                                Method     int GetHashCode()                                                                                                  
      GetType                                    Method     type GetType()                                                                                                     
      ToString                                   Method     string ToString()                                                                                                  
      BccExternalSharingInvitations              Property   bool BccExternalSharingInvitations {get;}                                                                          
      BccExternalSharingInvitationsList          Property   string BccExternalSharingInvitationsList {get;}                                                                    
      CompatibilityRange                         Property   string CompatibilityRange {get;}                                                                                   
      DefaultSharingLinkType                     Property   Microsoft.Online.SharePoint.TenantManagement.SharingLinkType DefaultSharingLinkType {get;}                         
      DisallowInfectedFileDownload               Property   bool DisallowInfectedFileDownload {get;}                                                                           
      DisplayStartASiteOption                    Property   bool DisplayStartASiteOption {get;}                                                                                
      EnableGuestSignInAcceleration              Property   bool EnableGuestSignInAcceleration {get;}                                                                          
      ExternalServicesEnabled                    Property   bool ExternalServicesEnabled {get;}                                                                                
      FileAnonymousLinkType                      Property   Microsoft.SharePoint.Client.AnonymousLinkType FileAnonymousLinkType {get;}                                         
      FolderAnonymousLinkType                    Property   Microsoft.SharePoint.Client.AnonymousLinkType FolderAnonymousLinkType {get;}                                       
      IPAddressAllowList                         Property   string IPAddressAllowList {get;}                                                                                   
      IPAddressEnforcement                       Property   bool IPAddressEnforcement {get;}                                                                                   
      IPAddressWACTokenLifetime                  Property   int IPAddressWACTokenLifetime {get;}                                                                               
      LegacyAuthProtocolsEnabled                 Property   bool LegacyAuthProtocolsEnabled {get;}                                                                             
      NoAccessRedirectUrl                        Property   string NoAccessRedirectUrl {get;}                                                                                  
      NotificationsInOneDriveForBusinessEnabled  Property   bool NotificationsInOneDriveForBusinessEnabled {get;}                                                              
      NotificationsInSharePointEnabled           Property   bool NotificationsInSharePointEnabled {get;}                                                                       
      NotifyOwnersWhenInvitationsAccepted        Property   bool NotifyOwnersWhenInvitationsAccepted {get;}                                                                    
      NotifyOwnersWhenItemsReshared              Property   bool NotifyOwnersWhenItemsReshared {get;}                                                                          
      ODBAccessRequests                          Property   Microsoft.SharePoint.Client.SharingState ODBAccessRequests {get;}                                                  
      ODBMembersCanShare                         Property   Microsoft.SharePoint.Client.SharingState ODBMembersCanShare {get;}                                                 
      OfficeClientADALDisabled                   Property   bool OfficeClientADALDisabled {get;}                                                                               
      OneDriveForGuestsEnabled                   Property   bool OneDriveForGuestsEnabled {get;}                                                                               
      OneDriveStorageQuota                       Property   double OneDriveStorageQuota {get;}                                                                                 
      OrphanedPersonalSitesRetentionPeriod       Property   int OrphanedPersonalSitesRetentionPeriod {get;}                                                                    
      OwnerAnonymousNotification                 Property   bool OwnerAnonymousNotification {get;}                                                                             
      PermissiveBrowserFileHandlingOverride      Property   bool PermissiveBrowserFileHandlingOverride {get;}                                                                  
      PreventExternalUsersFromResharing          Property   bool PreventExternalUsersFromResharing {get;}                                                                      
      ProvisionSharedWithEveryoneFolder          Property   bool ProvisionSharedWithEveryoneFolder {get;}                                                                      
      PublicCdnAllowedFileTypes                  Property   string PublicCdnAllowedFileTypes {get;}                                                                            
      PublicCdnEnabled                           Property   bool PublicCdnEnabled {get;}                                                                                       
      PublicCdnOrigins                           Property   System.Collections.Generic.IList[Microsoft.Online.SharePoint.PowerShell.SPOPublicCdnOrigin] PublicCdnOrigins {get;}
      RequireAcceptingAccountMatchInvitedAccount Property   bool RequireAcceptingAccountMatchInvitedAccount {get;}                                                             
      RequireAnonymousLinksExpireInDays          Property   int RequireAnonymousLinksExpireInDays {get;}                                                                       
      ResourceQuota                              Property   double ResourceQuota {get;}                                                                                        
      ResourceQuotaAllocated                     Property   double ResourceQuotaAllocated {get;}                                                                               
      SearchResolveExactEmailOrUPN               Property   bool SearchResolveExactEmailOrUPN {get;}                                                                           
      SharingAllowedDomainList                   Property   string SharingAllowedDomainList {get;}                                                                             
      SharingBlockedDomainList                   Property   string SharingBlockedDomainList {get;}                                                                             
      SharingCapability                          Property   Microsoft.Online.SharePoint.TenantManagement.SharingCapabilities SharingCapability {get;}                          
      SharingDomainRestrictionMode               Property   Microsoft.Online.SharePoint.TenantManagement.SharingDomainRestrictionModes SharingDomainRestrictionMode {get;}     
      ShowAllUsersClaim                          Property   bool ShowAllUsersClaim {get;}                                                                                      
      ShowEveryoneClaim                          Property   bool ShowEveryoneClaim {get;}                                                                                      
      ShowEveryoneExceptExternalUsersClaim       Property   bool ShowEveryoneExceptExternalUsersClaim {get;}                                                                   
      ShowPeoplePickerSuggestionsForGuestUsers   Property   bool ShowPeoplePickerSuggestionsForGuestUsers {get;}                                                               
      SignInAccelerationDomain                   Property   string SignInAccelerationDomain {get;}                                                                             
      SpecialCharactersStateInFileFolderNames    Property   Microsoft.Online.SharePoint.TenantManagement.SpecialCharactersState SpecialCharactersStateInFileFolderNames {get;} 
      StartASiteFormUrl                          Property   string StartASiteFormUrl {get;}                                                                                    
      StorageQuota                               Property   long StorageQuota {get;}                                                                                           
      StorageQuotaAllocated                      Property   long StorageQuotaAllocated {get;}                                                                                  
      UseFindPeopleInPeoplePicker                Property   bool UseFindPeopleInPeoplePicker {get;}                                                                            
      UsePersistentCookiesForExplorerView        Property   bool UsePersistentCookiesForExplorerView {get;}                                                                    
      UserVoiceForFeedbackEnabled                Property   bool UserVoiceForFeedbackEnabled {get;}   
      
      
  • #87872

    Sam Boutros
    Participant

    Assuming $curentTenantValue and $RLD_SPOT are type 'string'

    $RLD_SPOT = get-spotenant
    $flag = 0..($RLD_SPOT.Length-1) | foreach {
        if($RLD_SPOT.Chars($PSItem) -ne $curentTenantValue.Chars($PSItem)) {
            $curentTenantValue.Chars($PSItem)
        }
    }
    $flag = $flag -join ''
    

    A string is not treated here as an array of characters that you can address as $VariableName[int] for example. However, the string type has a .chars(int) parameterized property that gives you essentially the same functionality..

    Example:

    $String = 'myString'
    
    $ArrayofChars = 0..($String.Length-1) | foreach { $String.Chars($PSItem) }
    $ArrayofChars
    
    $BacktoString = $ArrayofChars -join ''
    $BacktoString
    
    • #88789

      Manojkumar Pandian
      Participant

      Hi Sam,

      As given above GM list, both are objects which has multiple properties, My objective is to compare each property value with RLD and Current to store the difference for further processing. I don't want to specify each property like $RLD_SPOT.Property1, $RLD_SPOT.Property2... etc.. should be get in to loop and compare one by one.

      Thanks,
      MKP

You must be logged in to reply to this topic.