Ошибка вывода с графическим интерфейсом Powershell «тип данных» - PullRequest
0 голосов
/ 28 марта 2019

Доброе утро,

Я пытаюсь создать сложный графический интерфейс PowerShell и вывести проблему для некоторых данных. Я использую сочетание CheckedListBox + TextBox с csv, импортированным для вывода результатов на экран.

Теперь для большинства проверенных данных, которые я хочу получить, это работает, но некоторые данные, с которыми я работаю, необходимо преобразовать, прежде чем показывать, здесь возникает проблема.

Кодовые части, которые имеют проблему ниже

if($ButtonMultiAttr.Checked -eq 'Multiple Attribute' -and $textboxUser.Text -like '*c:\*'){

#Get all int64 properties' type 'some contains datetime data type'
$DateType1 = (Get-ADUser allouamo -Property * | select accountExpires, lastLogonTimestamp, lastlogon, pwdlastset).psobject.properties | select name

#Get all Datetime properties' type
$DateType2 = (Get-ADUser Allouamo -properties *).PsObject.Properties | Where{$_.TypeNameOfValue -eq 'System.DateTime'} |select Name, Value

#Add variable to use them in the next prompt
$List = $ListBoxMultiAtr.CheckedItems
$Users = Import-Csv $TextBoxUser.Text

$Datedata1 = foreach($User in $Users){Get-ADUser $User.name -property $DateType1 | Select @{name=$DateType1;e={[datetime]::FromFileTime($_."$DateType1")}} | out-string}

$Datedata2 = foreach($User in $Users) {Get-ADUser $User.name -properties $DateType2.name | Select-object -property $List | Format-list | out-string}
$UserInfo = foreach($User in $Users) {Get-ADUser $User.name -properties $List | select $list | format-list | Out-String}
$Data = ('accountExpires', 'badPasswordTime', 'lastLogonTimestamp', 'lastlogon', 'pwdlastset')

Switch($List){
    {$Data -contains $_}{$ResultBox.Text = $DateData1}
    {$Datetype2.name -contains $_}{$ResultBox.Text = $DateData2}
    default{$ResultBox.Text = $Userinfo}}
}

Проблема в том, что $ Datedata1, из определенных полученных мной атрибутов, я делаю преобразование в данные, читаемые по времени и затем вставляю их в список переключателей для вывода на экран.

Проблема в том, что при выполнении теста я получил ошибку:

Select: The key "Name" if of System.Object[] type not valid ; The awaited type is System.String

Я пробовал много разных вещей, некоторые из них: - Использование $ List, который проверяет данные из моего ящика - Использование $ Data - атрибутов, которые необходимо преобразовать, «не используя переменную DateType1» - Используя этот код

$DateData1 = get-aduser $users -property $datetype1.name | select $datetype1.name

foreach ($prop in $DateType1.name) {
$DateData1.$prop = [datetime]::FromFileTime($DateData1.$prop)
}

Код ошибки

Get-ADUser : Impossible to convert "System.Object[]" to "Microsoft.ActiveDrirectory.Management.ADUser" type, required by the parameter "Identity. The specified method is not taken in charge

или

$DateData1 = Foreach($user in $users){get-aduser $user.name -property $datetype1.name | select $datetype1.name}

foreach ($prop in $DateType1.name) {
$DateData1.$prop = [datetime]::FromFileTime($DateData1.$prop)
}

Ошибка:

Impossible to convert the argument «fileTime» (Value «System.Object[]») of «FromFileTime» to «System.Int64» type: «Impossible to convert the value «System.Object[]» of «System.Object[]» type to «System.Int64» type.

Что мне нужно, так это то, что, несмотря на любой выбор, который я могу сделать из своего контрольного списка, 1, или 2, или 10, он учитывает все и выполняет преобразование, если выбран тип данных datetime.

Спасибо за любую помощь или помощь, которая может прийти:)

Nad

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