使用 Powershell 创建用户

Creating users with Powershell

我正在努力学习 PowerShell。

$newuser = ‘ash’, ‘bob’, ‘charlie’, ‘david’

$newuser | foreach({New-LocalUser -Name $_newuser -Password “123123” -Description “Students”})

我想做的是使用列表中的每个名称创建新的本地帐户,$newuser,以及我拥有的密码和描述。

我在谷歌上搜索了很多并尝试了其他方法,但没有成功。

我需要使用此语法创建列表吗? $newuser = @(ash, bob, charlie, david)

我也不知道在 -Name 后面放什么。 尝试了 -Name $newuser-Name $__.newuser-Name $_.($newuser) 等。 我一直在寻找任何方法来调用 $newuser 中的每个对象来创建每个用户帐户。

任何建议将不胜感激!!

您即将到达目的地!

声明数组: 您会注意到,当您尝试在 PowerShell ISE 或 VSCode 中使用 $newuser = @(ash, bob, charlie, david) 时,您会收到语法错误.这是因为您需要在每个项目周围放置引号。您最初完成它的方式在实践中没有什么不同。这完全取决于您要如何定义数组。有时对于扩展多行的大型数组,当用 @()

包裹时,可以更容易地跟踪它的结束位置

了解你的变量:你可以通过尝试两种方式来测试这两种数组声明方法,并使用 GetType() 方法,如下所示:$newuser.GetType()

命名约定: 在处理包含多个对象的事物(如数组)时,尝试对变量名使用复数形式。所以在这种情况下,$newuser 应该是 $newusers,并尝试让你的变量描述它们包含的内容。 (你在这里做得很好)

$PSItem 和 $_: 当你遍历一个数组时,有一个漂亮的 PowerShell 变量叫做 $PSItem,也用别名 $_ 调用.此变量包含您正在迭代的当前对象。请参阅下面的示例,了解我如何做这样的事情,但也要记住,大多数时候在 PowerShell 中有多种方法可以完成任务。

密码: 您在此处使用的 cmdlet 不会将字符串作为密码,而是需要一个 SecureString。您可以在脚本中将字符串强制为 SecureString,但仅作为练习这样做。最好的办法是拥有一个您可以调用并随后粉碎的文件,或者在需要传递值时调用的外部密码管理器。 PlainTexting 密码从来都不是一个好主意

方法一

$newUsers = ‘ash’, ‘bob’, ‘charlie’, 'david’
$securePassword = ConvertTo-SecureString '123123' -AsPlainText -Force 

foreach ($user in $newUsers) {
    New-LocalUser -Name $user -Password $securePassword -Description 'Students'
}

方法二

$securePassword = ConvertTo-SecureString '123123' -AsPlainText -Force 

‘ash’, ‘bob’, ‘charlie’, 'david’ | ForEach-Object {New-LocalUser -Name $PSItem -Password $securePassword -Description 'Students'}

这主要是个人喜好,或者您会遵循您的团队使用的标准,但我会说第一个是我会在脚本中使用的标准,因为我发现它更具可读性,第二个是我会在终端机上即时执行的操作。