Powershell中的标头不正确
导入CSV文件后,我创建了一个变量哈希表,这些变量将在一个简单的命令行中使用 问题是,当我导入CSV文件时,头被转置;它不是一个具有各种标题的表,而是不同的。我的代码是:Powershell中的标头不正确,powershell,Powershell,导入CSV文件后,我创建了一个变量哈希表,这些变量将在一个简单的命令行中使用 问题是,当我导入CSV文件时,头被转置;它不是一个具有各种标题的表,而是不同的。我的代码是: $Import = Import-Csv "File\path\input.csv" foreach ($user in $import) { $msolparams = @{ UPN = $user.SamAccountName + "@company.com" Title = $
$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}
在使用CSV文件输入检查$import
变量后,哈希表标题显示如下:
SamAccountName : kodak.black
Location : Central
JobTitle : Title
DepartmentTitle : Department
Pname : Kodak
Plname : Black
而不是
SamAccountName Location JobTitle DepartmentTitle Plname Pname
正因为如此,它不能正确地从标题中获取值,并给出错误找不到MsolUser。
此外,您不能在变量中的任何位置使用|ft
,因为代码将出错并停止
请让我知道您的想法我认为这里的代码没有问题。实际上,您关心的只是数据的表示。这与PowerShell中的解释无关。我再一次很难找到对这种行为的引用,但您可以看到PowerShell在具有4个以上属性的对象上所做的操作。幕后PowerShell正在选择
格式列表
,而不是格式表
。您可以通过执行$user |格式列表
这种自动化旨在成为一种功能,使您可以轻松地读取屏幕上的数据,而不是将其压在表格中。横向房地产是有限的。如果您喜欢该视图,则可以将其输出到控制台,如$user | Format Table-AutoSize
至于你的问题,我只能想象你的输入数据有问题。您可能有隐藏的控制字符、空白等,或者错误是正确的,并且该用户确实不存在 您也可以显示csv文件的2或3行。请在发布前删除一些敏感信息。这可能很有用:我看这里没有问题。Powershell正在向您显示属性列表,因为它认为它无法以表格格式正确显示。有一个自动变量涵盖了这一点。这不应该是你的问题。你能展示一些样本数据吗。你可以很容易地在你的列中留下一些空白,或者是造成这种情况的原因。没有个人信息。这个名字是rap groupDisplay中的一个家伙,与powershell对象的工作方式无关。我不是哈希表方面的专家,但我怀疑其中的列不能超过2列,至少不是您创建它的方式。我认为这是由于一个首选项变量造成的,但我找不到它。所以我认为它是一个format.ps1xml,但我找不到pscustomobject的格式。