【问题标题】:Creating users with Powershell使用 Powershell 创建用户
【发布时间】:2020-09-24 19:15:57
【问题描述】:

我正在努力学习 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 调用每个对象以创建每个用户帐户的任何方法。

任何建议将不胜感激!

【问题讨论】:

    标签: windows powershell windows-server-2012


    【解决方案1】:

    你已经接近你想要的地方了!

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

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

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

    $PSItem 和 $_: 当您遍历一个数组时,有一个漂亮的 PowerShell 变量,称为 $PSItem,也由别名 $_ 调用。此变量包含您正在迭代的当前对象。请参阅下面的示例,了解我如何执行此类操作,但请记住,大多数时候在 PowerShell 中完成任务有多种方法。

    密码:您在此处使用的 cmdlet 不会将字符串作为密码,而是需要 SecureString。您可以在脚本中将字符串强制为 SecureString,但只能作为练习执行此操作。最好的办法是有一个文件,您可以从中调用并在之后粉​​碎,或者在需要传递值时调用外部密码管理器。 纯文本输入密码绝不是一个好主意

    方法一

    $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'}
    

    这主要是个人喜好,或者您会遵循团队使用的标准,但我会说第一个是我将在脚本中使用的,因为我觉得它更具可读性,第二个是我会在候机楼即时执行。

    【讨论】:

    • 我不同意复数形式。太容易被忽视了。而是像 foreach($user in $userlist){...} 那样清楚地定义它
    • 感谢您的详细解释!
    • 我明白为什么您不建议将密码设置为明文。但是,如果我希望所有用户都有一些我设置的默认密码并让他们在下次登录尝试时重置密码,我应该如何修复 -Password 参数?
    猜你喜欢
    • 2022-11-15
    • 2010-09-27
    • 1970-01-01
    • 2017-11-18
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多