使用 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'}
这主要是个人喜好,或者您会遵循您的团队使用的标准,但我会说第一个是我会在脚本中使用的标准,因为我发现它更具可读性,第二个是我会在终端机上即时执行的操作。
我正在努力学习 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'}
这主要是个人喜好,或者您会遵循您的团队使用的标准,但我会说第一个是我会在脚本中使用的标准,因为我发现它更具可读性,第二个是我会在终端机上即时执行的操作。