0

我正在尝试编写一个 Powershell 脚本来自动创建 AD 用户。我们是一个混合的 Linux/Windows 环境,并使用文本(现在是 CSV)文件来跟踪旧的 linux UID # 和用户名,这样它们就不会意外地被重复使用。我正在尝试让我的脚本解析文件,但似乎无法进行比较。

$sam = $GivenName.substring(0,1).ToLower() + $lastname.ToLower()
$usernames=Import-csv "uid.csv" 
ForEach($users in $usernames){
if($usernames.username -contains $sam){$uid = $true}
}

我使用了几种不同的方法,我从网上找到了从文件中将数据读入数组的方法,但问题似乎是无论如何,它永远不会设置 $uid = $true 并且我不知道为什么。

编辑:我将 if 语句更改为:

if($users.username -contains $sam){$uid = $true}

它奏效了。谢谢您的帮助!

为了消除一些混乱,$GivenName 和 $lastname 是由用户输入的,我只是在寻找完全匹配的内容,因为我试图避免重复使用用户名。此外,将 -contains 更改为 -eq 也可以。我已经为此奋斗了太久,如果你不能说我是一个 Powershell 菜鸟。

4

2 回答 2

1

您在循环中使用的循环变量$users,但在您使用的循环中$usernames。您可能想$users.username在 if 语句中使用

于 2013-08-15T17:33:02.500 回答
1

您提供的信息有点不清楚,但我认为这是问题所在:由于$usernames来自 CSV 文件,因此$usernames.username是一个字符串。-contains运算符用于集合(例如数组),并且仅在完全匹配时才有效(如果您正在寻找完全匹配,您应该使用-eq,但我假设这不是您想要的)。请改用-match。此外,您将$users设置为CSV 中的每条记录,因此它应该是$users.username将if语句更改为:

if ($users.username -match $sam) {
  $uid = $true
}
于 2013-08-15T17:33:25.327 回答