Powershell GUI“类型数据”的输出问题

时间:2019-03-28 16:52:48

标签: powershell datetime user-interface types output

早上好

我正在尝试制作复杂的GUI 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中进行选择,但它会考虑所有因素,并且如果选择了这些日期时间数据类型,则会进行转换。

谢谢您的启发或帮助:)

Nad

0 个答案:

没有答案