【发布时间】:2020-06-16 17:48:48
【问题描述】:
我对与构建 gui 相关的 PowerShell 世界有点陌生,但我设法创建了一个 gui,简而言之,它在 AD 中搜索用户,如果查找的信息正确,它将存储在带有 Out-File 命令的 CSV。
示例如下所示。
Enabled : False
Locked : False
DisplayName : John Doe_test
GivenName : John
SurName : doe_test
SamAccountName : johndoe
Mail : ftestaddress@somemail.com
OfficePhone : 9999
Last Logon : 31/12/1600 21:00:00
Date Created : 7/6/2020 18:02:56
passwordlastset : 7/6/2020 18:02:56
输出的代码就是这个(这是搜索用户的部分,将其显示在只读文本框中,如果最终用户正确点击另一个按钮,它将存储数据。(写入Host值只是为了测试数据,否则每次存储都要输入到csv文件中。
$Formselected.controls.addrange(@($datousr,$save_btn))
$datousr.Text= Get-ADUser -filter {DisplayName -eq $username} -Properties * |Select-Object Enabled, @{Expression={$_.LockedOut};Label='Locked';}, DisplayName, GivenName, SurName, SamAccountName, Mail, OfficePhone, @{ Expression ={[DateTime]::FromFileTime($_.LastLogon)}; Label='Last Logon';}, @{Expression={$_.Created};Label='Date Created';}, passwordlastset | Out-String
$data_usr=$datousr.text
$save_btn.Add_Click{
Write-Host "$data_usr"
$data_usr |Out-File "C:\scripts\data load.csv" -Encoding UTF8 -Append -Force
}
我想知道,因为它让我发疯了如何在 A1 上设置“启用”以及结果,在 A2 上为“假”等等,因为每个项目都在一行中。 我试过导出到 csv,但是,因为它来自一个变量,所以它只存储输出的长度,而不是值。
我想以这种方式存储:
Enabled Locked Username
False False JohnDoe
【问题讨论】:
-
这不是 CSV 文件。 [grin] 它是一个有点结构化的纯文本文件。您是否尝试过查看
Export-CSVcmdlet?它设计用于将对象导出到 CSV 文件... -
是的!当我导出到 CSV 时,它会返回这个
#TYPE System.String Length 368 -
#TYPE是因为您忘记使用-NoTypeInformation参数。 [grin] 值为368的Length列表示您的对象不是结构化对象。原因是这个>>>| Out-String破坏你的结构化对象 并给你一个字符串。Export-CSVcmdlet 需要一个结构化对象。
标签: powershell csv user-interface active-directory