我正在 AD 中自动创建我的新员工帐户。我已经创建了我的脚本来导入一个 csv 文件,并且一切正常。但是现在我试图通过将 HR 发送给我的电子邮件的内容进一步自动化,然后将其发送到 txt 文件中,然后将每行的 powershell 格式设置为一个新列,然后将其导出到一个 csv 文件中,我可以在其上运行我的其他脚本(最终将它们组合成 1 个脚本)电子邮件格式看起来像这样。
Username: Test User
Title: Sales
Department: Sales
Manager: Manager's Name
Similar User: CoWorker's Name`
Run Code Online (Sandbox Code Playgroud)
我只想将其复制并粘贴到记事本中并保存。然后让 powershell 导入它,将其格式化为如下所示,然后将其导出。
Username Title Department Manager Similar User
Test User Sales Sales Manager's Name CoWorker's Name
Run Code Online (Sandbox Code Playgroud)
我一直在尝试 import-csv 和 get-content 命令,但我没有运气让它按照我需要的方式格式化。有人有什么建议吗?
一种简单的方法是使用ConvertFrom-StringData(该解决方案假定每行只包含一个 :,并且输入文件名为user.txt; PSv3+):
$userObj = [pscustomobject] ((Get-Content -Raw user.txt) -replace ':', '=' |
ConvertFrom-StringData)
Run Code Online (Sandbox Code Playgroud)
由于ConvertFrom-StringDatarequires=作为键与其值之间的分隔符,-replace因此用于替换:为=。
由于ConvertFrom-StringData返回一个哈希表,[pscustomobject]因此使用cast将其转换为自定义对象。
一旦信息被解析为自定义对象$userObj,就很容易进一步处理它:
将信息保存到 CSV 文件out.csv:
$userObj | Export-Csv -NoTypeInformation -Encoding Utf8 out.csv
Run Code Online (Sandbox Code Playgroud)
这产生:
"Manager","Similar User","Department","Username","Title"
"Manager's Name","CoWorker's Name","Sales","Test User","Sales"
Run Code Online (Sandbox Code Playgroud)
默认格式为您提供了这个(恰好与输入非常相似:
$userObj = [pscustomobject] ((Get-Content -Raw user.txt) -replace ':', '=' |
ConvertFrom-StringData)
Run Code Online (Sandbox Code Playgroud)
$userObj | Format-Table 产量:
$userObj | Export-Csv -NoTypeInformation -Encoding Utf8 out.csv
Run Code Online (Sandbox Code Playgroud)
要获得所需的字段顺序$userObj | Format-Table 'Username', 'Title', 'Department', 'Manager', 'Similar User'::
"Manager","Similar User","Department","Username","Title"
"Manager's Name","CoWorker's Name","Sales","Test User","Sales"
Run Code Online (Sandbox Code Playgroud)
如果您想去掉分隔线 ( ---- ...) 以及前导和尾随空行:
((($userObj | Format-Table 'Username', 'Title', 'Department', 'Manager', 'Similar User') | Out-String -Stream) | ? { $_ -notmatch '^-|^$' })
Manager : Manager's Name
Similar User : CoWorker's Name
Department : Sales
Username : Test User
Title : Sales
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8350 次 |
| 最近记录: |