如何使用 CSV 创建本地用户并将它们放在一个组中

Posted

技术标签:

【中文标题】如何使用 CSV 创建本地用户并将它们放在一个组中【英文标题】:How to create localusers with a CSV and put them in a group 【发布时间】:2021-12-08 08:35:06 【问题描述】:

我最近开始使用 Powershell 编写脚本并尝试制作一个脚本,该脚本创建用户并将它们从 csv 文件放入特定组。它还应该检查用户和组是否已经存在,如果已经存在,将它们写到一个新的 csv 文件中。我会把我的脚本留在这里。谢谢你的帮助。

$usernames = Import-csv -Path C:\_work\ps\Powershell test übung\20211021_Labor_user.csv -Delimiter ";"
$Password = Read-Host -AsSecureString
foreach($Username in $Usernames)

 $Fullname = $username.Nachname +" "+ $Username.Vorname 
 $desc = $Fullname + " testuser kann gelöscht werden"
 $Name = $Username.Anmeldename
 $User = $(try Get-localuser -name $Name -ErrorAction SilentlyContinue catch $null)
 If ($User -eq $Null) 
 
  New-LocalUser -name $Username.benutzername -Password $Password -Fullname "$Fullname" -Description $desc
  Get-LocalUser -name $username.benutzername | select * | Export-Csv -Append -Delimiter "," -Path C:\_work\ps\erstelltuser.csv

 
 Else
 
 write-host "User" $Username.benutzername " exists"
  
IF ($username.Group1 -ne "")
 
 $Group = $Username.Group1
  Get-LocalGroup -Name $Group -ErrorAction SilentlyContinue -OutVariable inkasso 
 IF  ($testgroup.name -ne $Group)
 
 New-LocalGroup -name $Group
 
  Add-LocalGroupMember -Group $Group -Member $Name 
  

  

【问题讨论】:

Anmeldenamebenutzername 一样吗?您实际打算使用的 PowerShell 版本是什么?请删除不适用的标签 请说明您面临的具体问题,否则问题可能已关闭。 我们还没有收到您的来信.. 作为 SO 新手,您可能不知道这一点,但习惯上点击左侧的 图标 accept the answer that best solved your problem .这将有助于其他有类似问题的人更轻松地找到它,并有助于激发人们回答您的问题。 【参考方案1】:

由于我们不知道您的 CSV 的结构,因此很难回答。 但是,我认为在您的代码中,您有时会弄错属性名称,并且可以在这里和那里使用更好的变量名称。

假设您的 Csv 看起来像这样:

Vorname,Nachname,Anmeldername,Group
Klaus,Kinski,kinski,DummyUsers
Horst,Schimanski,schimanski,

那么你的代码可能是:

# the path has a space in it so you need to surround it with quotes
$users    = Import-csv -Path 'C:\_work\ps\Powershell test übung\20211021_Labor_user.csv' -Delimiter ";"
$Password = Read-Host -Prompt 'Please enter a password for new users' -AsSecureString

foreach ($user in $users) 
    $fullname    = ('0 1' -f $user.Nachname, $user.Vorname).Trim()
    $description = "$fullname testuser kann gelöscht werden"
    $localUser   = Get-LocalUser -Name $user.Anmeldename -ErrorAction SilentlyContinue
    if (!$localUser ) 
        # the user doesný exist yet, so create it first
        $localUser = New-LocalUser -Name $user.Anmeldename -Password $Password -FullName $fullname -Description $description
        # export to (existing) csv. The comma is used by default as delimiter
        $localUser | Select-Object * | Export-Csv -Path 'C:\_work\ps\erstelltuser.csv' -Append -NoTypeInformation
    
    else 
        Write-Warning "User '$($user.Anmeldename)' already exists"
    
    # now test if field 'Group' has been set in the CSV for this user
    if (![string]::IsNullOrWhiteSpace($user.Group)) 
        # try and get that group object
        $group = Get-LocalGroup -Name $user.Group -ErrorAction SilentlyContinue
        if (!$group) 
            # that group doesn't exist yet, so create it first
            $group = New-LocalGroup -Name $user.Group
        
        # test if the local user is already a member of the group
        $members = (Get-LocalGroupMember -Group $group).SID
        if (@($members) -contains $localUser.SID) 
            Write-Host "User '$($localUser.Name)' is already a member of group $($group.Name)"
        
        else 
            Add-LocalGroupMember -Group $group -Member $localUser 
        
    

【讨论】:

是的,csv 看起来像是你写的。我最近刚开始使用 Powershell(大概 2-3 周),你的代码让我有点不知所措...... @if19kome 首先,您的代码并没有那么糟糕。我只是改进了它,但保留了逻辑和结构。如果我的回答解决了您的问题,请单击左侧的大复选标记图标将其标记为“完成”。这有助于其他有类似问题的人更轻松地找到它(您也因此获得了声誉积分)

以上是关于如何使用 CSV 创建本地用户并将它们放在一个组中的主要内容,如果未能解决你的问题,请参考以下文章

调用函数并将值放在角度形式组中

如何使用输入将正好5个字符放在一个字符串中并将它们分开

如何将一个标签放在另一个标签的末尾并将它们都居中

将单个组中的 pandas 数据帧迭代地附加到 h5 文件

如何在 Jenkins 中创建用户并将其添加到组中以进行身份​​验证?

从 CSV 读取输入并将它们用于不同的功能