- 对用户提供的数据使用读取主机
- 使用读主机和写主机创建菜单
- 动力外壳管道机构
- 导入模块
- Active Directory cmdlets New-ADUser and Get-ADUser
- 使用位置对象筛选 AD 用户
- 比赛条件简介。
- 快速轻松地记录命令历史记录。
添加用户是系统管理员世界的主要内容。事实是,如果没有任何用户,那么拥有一个系统就没有多大意义。许多系统都有数百甚至数千个用户。您可以打赌,几乎每个都是由系统管理员创建的。您还可以打赌,它们中的大多数可能是手工制作的。
大多数系统管理员认为创建用户帐户是一项相当微不足道的任务,总的来说确实如此。但是有几个必填字段会使复制和粘贴变得非常痛苦。许多公司为了节省入职成本,通常都有全新的员工课程。因此,系统管理员通常不会添加单个帐户,而是一次添加数十个帐户。
这通常涉及:
- 打开活动目录用户和计算机
- 查找常规用户帐户(没有管理员权限或特殊权限的帐户)
- 右键单击并选择复制
- 输入名字
- 输入姓氏
- 输入全名
- 输入一个唯一的用户名(你记得在点击复制之前先查一下吗?
- 选择下一步
- 单击帐户已禁用(或输入通用密码)
- 选择下一步
- 选择“完成”
如果,你只需要打开你的新用户脚本怎么办
- 按 F5 键
- 输入名字
- 输入姓氏
除了显着减少击键次数和单击之外,如果此脚本还可以保留创建的每个用户的记录怎么办?激起你的兴趣了吗?一起来看看吧。
警告此代码经常被破坏以跨越多行。这是在管道 (|) 运算符处完成的。我们将在本章后面了解有关管道机制的更多信息!这将在PowerShell 7.x中运行良好。但是,对于旧版本的PowerShell,这可能会带来问题。如果计划使用 PowerShell 5.1 运行此代码,可以通过将以管道 (|) 开头的每一行移动到它前面的行尾来解决此问题。
首先,我们将查看适用于旧版Windows PowerShell 5.1以及较新的PowerShell 7.x的代码:
图 3.1 适用于 PowerShell 7.x 和 PowerShell 5.1现在,请注意下面图 3.2 中的差异;此脚本在PowerShell 7.1中完美运行,但在旧版Windows PowerShell 5.1及更低版本中中断。
如图 3.3 第 9 行和第 10 行所示。该行目前为:
图 3.2 适用于 PowerShell 7.x,但不适用于 PowerShell 5.1图 3.3 用户创建脚本的高级视图$First_Name=Read-Host "What is the user’s First Name?".Trim()
$Last_Name=Read-Host "What is the user’s Last Name?".Trim()
$User_Name=$First_Name.SubString(0,1) $Last_Name
$Log_File="C:\Logs\$User_Name.log"
Write-Output "Creating user: $User_Name"
|Tee-Object $Log_File -append
New-ADUser -Name $User_Name -GivenName $First_Name -Surname $Last_Name `
-DisplayName $User_Name -SamAccountName $User_Name -Enabled $false
|Tee-Object $Log_File -Append
Start-Sleep 5
Get-ADUser -filter *|Where-Object {$_.SamAccountName -eq $User_Name}
|Tee-Object $Log_File –Append
3.1.1 它有什么作用?
- 向操作员询问用户的名字,并获取输入并将其存储为变量 $First_Name。它还通过使用第 2 章中学习的 Trim 方法从条目中删除任何空格,以防止空格成为用户名的一部分。
- 向操作员询问用户的姓氏,并获取输入并将其存储为变量 $Last_Name。像以前一样,它还会删除任何空格以防止空格成为用户名的一部分。
- 它将用户名字的第一个字符串起来,并将其与用户的姓氏连接起来,将其存储为名为 $User_Name 的变量。
- 创建一个名为 $Log_File 的变量,并为其赋值“C:\Logs\”与新创建的 $User_Name 连接并追加日志文件。如果 $User_Name 是 JDoe,则 $Log_File 将是 C:\Logs\JDoe.log。
- 然后,它向操作员显示消息“正在创建用户:”,该消息与新创建的 $User_Name 连接。它使用名为“Tee-Object”的新 PowerShell cmdlet 同时将此输出发送到操作员屏幕和日志文件。我们将在本章后面了解有关 Tee-Object cmdlet 的更多信息!
- 然后,它为 $User_Name 创建 ACTIVE DIRECTORY 用户并禁用它。它还会将此信息发送到日志文件,然后将此新信息附加到日志中(以便不会覆盖整个文件)。
- 然后,脚本只需等待五秒钟。
- 最后,它查询 Active Directory 查找新创建的帐户,并将结果发送到日志文件,将结果附加到日志文件,以确认现在可以在 ACTIVE DIRECTORY 中找到该帐户。
为了在您的环境中使用此代码,您将需要访问活动目录域控制器。这些 PowerShell cmdlet 是您在域控制器上安装的活动目录功能的本机组件。
若要在不登录到域控制器(远程或控制台)的情况下使用这些 Active Directory cmdlet,可以安装Microsoft远程服务器管理工具 (RSAT)。有关下载位置和安装方法的说明,请参阅第 3 章代码中包含的 README.md。
3.2 注释通常,当我们编写脚本或编写任何类型的代码时,我们希望有一种方法来提醒自己,或者其他阅读我们代码的人我们在做什么以及为什么。最简单的方法是添加注释。注释是我们可以在脚本中插入解释或注释而无需执行的方式。
有两种方法可以将注释输入到 PowerShell 脚本中:
- 单行注释
- 多行注释
单行注释以井号或井号 (#) 启动。哈希左侧的任何内容通常都会被PowerShell忽略。
图 3.4 单行注释示例。