【发布时间】:2013-08-17 01:19:22
【问题描述】:
我正在尝试编写一个 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 菜鸟。
【问题讨论】:
-
$GivenName和$lastname来自哪里?也就是说,您对$sam的值是否正确有信心吗?这是否是一个更大的脚本(一个内部循环)的一部分,它正在循环您从另一个来源派生的用户集合? -
存储在用户名列中的值是与
$sam完全匹配还是部分匹配? -
请发布 uid.csv 的前几行,包括标题行。另外,您如何分配 $givenname 和 $lastname?请显示任何相关代码,并提供数据源示例,以便我们了解它们的外观。
-
如果你在做
foreach($users in $usernames),你应该在代码块中使用$users,而不是$usernames -
将 $usernames.username 更改为 $users.username 修复了它。主要问题中有更多的 cmets。谢谢!!!