none
строковые значения из массива RRS feed

  • Вопрос

  • есть такой вот код -0 выборка из бд юзеров

    function getsql{

    param($sql1)

    $SQLSrv = 'addssec\mssqladdssec'

    $SQLCon = New-Object System.Data.SQLClient.SQLConnection

    $SQLCon.ConnectionString ="Data Source=$SQLSrv;Database=asterisk;Integrated Security=SSPI"

    $SQLCon.Open()

    $Query = $sql1

    $SQLCommand = New-Object System.Data.SqlClient.SqlCommand($Query, $SQLCon)

    $SQLAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($SQLCommand)

    $DataSet = New-Object System.Data.DataSet;

    $SQLAdapter.Fill($DataSet);

    $DataTable=New-Object System.Data.DataTable

    $DataTable=$DataSet.Tables[0]

    $DataTable.DefaultView

    $SQLCon.Close()

    }

     

    $arradd = getsql "select username from userredirectcall Where statusredirect = '1';"

    $arrdel = getsql "select username from userredirectcall Where statusredirect = '0';"

     

    вытоге вывод переменной массива 

    PS C:\Users\Administrator.CORP-GROUP> $arradd

    3

     

    username

    --------

    administrator

    anton

    zaxar

     

     

    PS C:\Users\Administrator.CORP-GROUP> $arradd[1]

     

    username

    --------

    administrator

     

    нужно чтоб значения были строковые - вот так

    PS C:\Users\Administrator.CORP-GROUP> $arradd

    administrator

    anton

    zaxar

     

    PS C:\Users\Administrator.CORP-GROUP> $arradd[1]

    administrator

     

    как это сделать (нетрудно догадатmся что поим будет подстfновкка логинов в командлеты по выборке из AD)

    уже который час бьюсь не могу понять как так сделать

    ($arradd | Get-Member делал что-то не помогло...)

    24 марта 2011 г. 19:08

Ответы

  • 1)Либо исправьте в скрипте $SQLAdapter.Fill($DataSet) | Out-Null и $arradd | select  -exp username

    2) Или $arradd | select -skip 1 -exp username

    Если используйте foreach,for,то указывайте свойство username.

    $arradd | select -skip 1  | foreach {$_.username} - без исправлений в скрипте,если выполнили пункт 1,то $arradd | % {$_.username}

    • Помечено в качестве ответа KazunEditor 25 марта 2011 г. 6:52
    25 марта 2011 г. 5:36
    Отвечающий

Все ответы

  • $arradd | select -exp username или используйте for,foreach и т.д,для перечисления всех индексов массива c занесением в новую переменную.

     

    24 марта 2011 г. 19:39
    Отвечающий
  • так он и перечисляет тоже в таком виде

     

    username

    --------

    administrator

     

     

    а на $arradd | select -exp username матерится.

    Select-Object : Property "username" cannot be found.
    At line:1 char:17
    + $arradd | select <<<<  -ExpandProperty username
        + CategoryInfo          : InvalidArgument: (3:PSObject) [Select-Object], PSArgumentException
        + FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
    administrator
    anton
    zaxar
    и во что пишет при 
    PS C:\Users\Administrator.CORP-GROUP> $arradd | Get-Member
       TypeName: System.Int32
    Name        MemberType Definition
    ----        ---------- ----------
    CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value)
    Equals      Method     bool Equals(System.Object obj), bool Equals(int obj)
    GetHashCode Method     int GetHashCode()
    GetType     Method     type GetType()
    GetTypeCode Method     System.TypeCode GetTypeCode()
    ToString    Method     string ToString(), string ToString(string format), string ToString(System.IFormatProvider pro...
       TypeName: System.Data.DataRowView
    Name            MemberType            Definition
    ----            ----------            ----------
    BeginEdit       Method                System.Void BeginEdit()
    CancelEdit      Method                System.Void CancelEdit()
    CreateChildView Method                System.Data.DataView CreateChildView(System.Data.DataRelation relation), Syste...
    Delete          Method                System.Void Delete()
    EndEdit         Method                System.Void EndEdit()
    Equals          Method                bool Equals(System.Object other)
    GetHashCode     Method                int GetHashCode()
    GetType         Method                type GetType()
    ToString        Method                string ToString()
    Item            ParameterizedProperty System.Object Item(int ndx) {get;set;}, System.Object Item(string property) {g...
    username        Property              System.String username {get;set;}

    25 марта 2011 г. 4:30
  • 1)Либо исправьте в скрипте $SQLAdapter.Fill($DataSet) | Out-Null и $arradd | select  -exp username

    2) Или $arradd | select -skip 1 -exp username

    Если используйте foreach,for,то указывайте свойство username.

    $arradd | select -skip 1  | foreach {$_.username} - без исправлений в скрипте,если выполнили пункт 1,то $arradd | % {$_.username}

    • Помечено в качестве ответа KazunEditor 25 марта 2011 г. 6:52
    25 марта 2011 г. 5:36
    Отвечающий
  • Спасибо!
    25 марта 2011 г. 6:47