导入CSV文件后,我创建了将在简单命令行中使用的变量的哈希表。
问题是当我导入CSV文件时,标头会转置;它不是具有各种标题的表,而是不同的。我的代码是:
$Import = Import-Csv "File\path\input.csv"
foreach ($user in $import) {
$msolparams = @{
UPN = $user.SamAccountName + "@company.com"
Title = $user.JobTitle
Deparment = $user.DepartmentTitle
Displayname = $user.Pname + "," + " " + $user.Plname
Location = $user.location}
Set-MsolUser -UserPrincipalName $msolparams.UPN -Title $msolparams.Title -Department $msolparams.Department -DisplayName $msolparams.Displayname}
在将$import
变量与CSV文件输入一起检查后,哈希表标头如下所示:
SamAccountName : kodak.black
Location : Central
JobTitle : Title
DepartmentTitle : Department
Pname : Kodak
Plname : Black
代替
SamAccountName Location JobTitle DepartmentTitle Plname Pname
由于这个原因,它不能正确地从标头中获取值并给出错误Cannot find MsolUser .
此外,您也不能在变量的任何位置使用| ft
,因为代码将出错并停止。
请让我知道您的想法
答案 0 :(得分:3)
我没有看到这里显示的代码有问题。您真正关心的只是数据的表示。这与PowerShell中的解释无关。我再次遇到麻烦,无法找到对此确切行为的引用,但是您正在看到PowerShell对具有4个以上属性的对象执行的操作。在幕后,PowerShell选择了Format-List
而不是Format-Table
。您可以通过$user | Format-List
此自动化旨在作为一项功能,使您可以轻松地读取屏幕上的数据,而不是将其压缩在表格中。横向房地产是有限的。如果您希望使用该视图,则可以将其输出到$user | Format-Table -AutoSize
之类的控制台。 Note Please do not save the output of that snippet. It is meant as a display mechanism.
关于您的问题,我只能为您输入的数据出现问题提供图像。您具有隐藏的控制字符,空格等,或者错误正确且该用户确实不存在。