由于在ForEach循环中被格式化为奇数格式,因此无法从.csv导入数据并运行ForEach
我尝试将.csv更改为包含标头/不包含标头,我尝试了foreach和foreach-object命令的变体。如果我显示加载了电子邮件地址的变量,则将按预期显示。
所以类似:
''' Import Data, in this instance a .csv with a single column of email addresses:
''' foreach line run the following command, the $line should represents each email address in the .csv
代码:
$Accounts = Import-Csv C:\temp\Emails.csv
ForEach ($line in $Accounts) {
remove-msoluser -UserPrincipalName "$line" -Force
}
我要做的就是导入带有单个电子邮件地址列的.csv,对于其中的每个电子邮件地址,我都需要运行一个用于Azure的线性PS命令。
问题是,当foreach循环运行时,它似乎保留了第一行,并在其后添加了每一行,导致没有一条成功。
所以我的情况返回的错误是:
找不到用户。用户:@ {#FirstEmail @ Address.net =#Secondemail @ addreess.net}。
似乎在所有后续行中都保留了第一封电子邮件。同样,如果我确实有标头,它会在每行中保留该标头并将其与用户名关联。
对不起,这很可能非常简单,我只是看不到森林的树(或脚本的代码!)
任何帮助表示赞赏。谢谢。
答案 0 :(得分:1)
您有两个问题。首先是您没有正确导入csv文件。第二个原因是您没有正确引用结果对象。
首先,根据您的描述,您的csv文件没有标题。这意味着您将必须使用-header功能来提供自己的标题。
第二,导入csv文件时,结果是PSCustomObjects的数组。您需要提取此对象中的(唯一)字段,以便将字符串传递给remove-msouser。
尝试一下:
$Accounts = Import-Csv C:\temp\Emails.csv -header 'Address'
ForEach ($line in $Accounts){
remove-msoluser -UserPrincipalName $line.Address -Force
}