如何使用 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
【问题讨论】:
Anmeldename
和 benutzername
一样吗?您实际打算使用的 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 创建本地用户并将它们放在一个组中的主要内容,如果未能解决你的问题,请参考以下文章