Powershell CSV导入返回空字符串

Powershell CSV导入返回空字符串,powershell,csv,properties,null,import-csv,Powershell,Csv,Properties,Null,Import Csv,我现在已经在下面找到了代码,但是我得到了$userpass变量返回的$null。我已经检查了CSV文件,所有的都应该是正确的 Import-Module activedirectory #Dit deel van het script is voor het verzamelen van informatie die in de commands gestopt wordt. $csvpad = Read-Host -Prompt 'Geef het pad naar het CSV bes

我现在已经在下面找到了代码,但是我得到了
$userpass
变量返回的
$null
。我已经检查了CSV文件,所有的都应该是正确的

Import-Module activedirectory

#Dit deel van het script is voor het verzamelen van informatie die in de commands gestopt wordt.

$csvpad = Read-Host -Prompt 'Geef het pad naar het CSV bestand op (zonder bestandsnaam)
ZONDER backslash, bijvoorbeeld: D:\Gebruikers mappen'
$csvbestand = Read-Host -Prompt 'Geef het CSV bestandsnaam op'

#Voor het opslaan van de data uit het opgegeven .CSV bestand in de $users variable

Write-Host "CSV bestand importeren!"

$users = Import-Csv -Path "$csvpad\$csvbestand"

#Loop om door elke rij in het CSV bestand te gaan.

Foreach ($user in $users)
{
  #Leest de data van elk veld in elke rij en geeft de juiste data aan de juiste variable.
  $displayname = $user.Voornaam + " " + $user.Achternaam
  $userfirstname = $user.Voornaam
  $userlastname = $user.Achternaam
  $username = $user.Gebruikersnaam
  $usermail = $user.Voornaam + "." + $user.Achternaam + "@" + $user.Domein
  $ou = $user.OU
  $userpass = $user.Wachtwoord

    #Als de user niet in AD bestaat gaat deze door met het maken van een nieuwe account.
    New-ADUser -Name "$displayname" -DisplayName "$displayname" -GivenName "$userfirstname" -Surname "$userlastname" -Enabled $true -SamAccountName "$username" -EmailAddress "$usermail" -Path "$ou" -AccountPassword (ConvertTo-SecureString $userpass -AsPlainText -Force) -ChangePasswordAtLogon $true -PasswordNeverExpires $true
  }

Write-Host "Users uit het CSV bestand zijn aangemaakt!"
这是我正在使用的CSV(数据是随机的,因为它只是学校的一个学习项目)


有什么想法吗?

首先,您的屏幕截图以及代码片段文本和非代码片段文本似乎都是从GUI CSV阅读器复制的,因为我们得到的只是数据。数据(“CSV”中的“V”)在这里不如数据的结构和封装(“CS”)重要。也就是说,如果在记事本中打开CSV文件,您将看到的文本。你的OneDrive链接原来就是我要找的,尽管在我下载该文件之前,出于某种原因,它似乎只是原始CSV的屏幕截图

另外,这只是StackOverflow未来使用的一个提示,如果您要共享文本,最好是以文本而不是图像的形式共享,因为这样可以让复制和粘贴、搜索引擎和屏幕阅读器访问它

不管怎样,我会继续解决你的问题
$userpass
不应该是唯一意外为空的变量,因为
$user
的属性也没有值。你可以看到为什么如果我们看看是什么生产

PS> Import-Csv -Path "$Env:Temp\userlist.csv"

Voornaam;Achternaam;Domein;Gebruikersnaam;Wachtwoord;OU;Berekening usernames
----------------------------------------------------------------------------
Test;Account1;01testict.nl;Te.Account1;P@ssw0rd;OU=Users
Testing;Account2;01testict.nl;Te.Account2;P@ssw0rd;OU=Users
Test123;Account3;01testict.nl;Te.Account3;P@ssw0rd;OU=Users
Test971;Account4;01testict.nl;Te.Account4;P@ssw0rd;OU=Users
Test652;Account5;01testict.nl;Te.Account5;P@ssw0rd;OU=Users
即输出具有名为
Voornaam的单个属性的对象;阿切特南;多明;格布鲁伊克斯纳姆;瓦赫特伍德;欧点;Berekening用户名
和该记录的所有值填充在一起。原因是,
Import Csv
要求分隔符默认为逗号,而文件使用分号。修复方法是使用
-Delimiter
参数指定分号作为
导入Csv
使用的分隔符,您现在可以看到它输出具有正确属性的完整对象

PS> Import-Csv -Path "$Env:Temp\userlist.csv" -Delimiter ';'


Voornaam             : Test
Achternaam           : Account1
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account1
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Testing
Achternaam           : Account2
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account2
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Test123
Achternaam           : Account3
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account3
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Test971
Achternaam           : Account4
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account4
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Test652
Achternaam           : Account5
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account5
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

…因此,通过该更改,
foreach
块中的
$user
迭代器变量也将具有预期的属性。

请举例说明CSV文件的外观。使用随机(非实际)数据您可以显示您的CSV样本吗?另外,在循环结束时调用
converttosecurestring
时,在
$userpass
-AsPlainText
参数之间缺少一个空格。您的csv是否有一个名为
Wachtwoord
的列?该列名称中是否有空格?您好,谢谢您的回复,我已经上传了用于测试脚本的CSV。数据与我在脚本中使用的数据完全相同,因为这只是一项学校作业,我似乎无法理解。@培根谢谢你,发帖几分钟后我确实看到了,我已经更改了它,但不幸的是,这并不能解决我的问题,我使用的CSV可以在主帖子或这个链接上找到:thankyou@bacon,这真是个骗局!Handi的诀窍是了解分隔符。这对将来肯定有帮助!
PS> Import-Csv -Path "$Env:Temp\userlist.csv" -Delimiter ';'


Voornaam             : Test
Achternaam           : Account1
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account1
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Testing
Achternaam           : Account2
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account2
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Test123
Achternaam           : Account3
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account3
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Test971
Achternaam           : Account4
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account4
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te

Voornaam             : Test652
Achternaam           : Account5
Domein               : 01testict.nl
Gebruikersnaam       : Te.Account5
Wachtwoord           : P@ssw0rd
OU                   : OU=Users,DC=01testict,DC=nl
Berekening usernames : Te