Могу ли я преобразовать разделенную запятыми строку обратно в объекты значений AD? - PullRequest
0 голосов
/ 04 декабря 2018

Поэтому я пытаюсь написать сценарий, который будет генерировать отчет AD на основе параметров, выбранных пользователем, и это вызвало у меня гораздо больше головной боли, чем я ожидал.Вот отрывок из того, что я пытаюсь сделать:

#import the ActiveDirectory Module 
Import-Module ActiveDirectory 

#report parameter variables
$firstname = {givenname}
$lastname = {surname}
$displayname = {DisplayName}
$logonname = {sAMAccountName}

#set array initially to number of possible parameters
$inputarray = (0..3)


#display menu
cls
Write-Host "Please select the parameters you would like in your report:"
Write-Host "Enter q when finished"
Write-Host `n
Write-Host " 1) First Name"
Write-Host " 2) Last Name"
Write-Host " 3) Display Name"
Write-Host " 4) Logon Name"
Write-Host `n

#read in selections from user while input isn't Q, and not bigger than array 
#bounds   
for ($i=0; (($i -le 3) -and ($inputarray[$i] -ne 'q')); $i++){

$selection = ($i + 1)       
    $inputarray[$i] = Read-host "Enter report parameter $selection"

    #exit loop for quit selection    
    if ($inputarray[$i] -eq 'q'){
        break
    }

    switch ($inputarray[$i])
    {
        "1" { $result = $firstname }
        "2" { $result = $lastname }
        "3" { $result = $displayname }
        "4" { $result = $logonname }
    }

    $inputarray[$i] = $result
}

$arraylen = $i
$test = ''

for ($x=0; $x -lt $arraylen; $x++){
    if($x -lt ($arraylen -1)){
        $test = ($test + $inputarray[$x] + ',')
    }
    else{
        $test = ($test + $inputarray[$x])
    }
}

Get-ADUser -searchbase "my targeted OU" -Properties * -Filter * |
Select-Object $test |
Export-Csv -Path "export path here.csv" -NoTypeInformation

Я думал, что создание строки из массива со значениями, разделенными запятыми, будет работать так же, как и их ввод (например, Select-Object имя, фамилия,lastlogin) но это явно не работает.Любые идеи, как изменить его обратно из строкового значения на отдельные объекты, так что, возможно, он примет это?

1 Ответ

0 голосов
/ 04 декабря 2018

1-я проблема: операторы типа $firstname = {givenname} присваивают блок сценария ({...}) переменной, которая не является вашей целью;вместо этого вы хотите назначить имена свойств в виде строк , например, $firstname = 'givenname'.

2-я проблема: вы создаете переменную $test в виде строки , тогда как вам нужно передать Select-Object массив строк (имен свойств), так что вы можете просто использовать $inputArray напрямую.

...