Powershell 显示每个用户所属组的脚本
我必须创建一个脚本,列出该用户所属的每个组,并显示指定的useronly本地组和帐户的名称。指定的用户名应该是脚本中的唯一参数。若我们不声明用户名,脚本应该使用运行脚本的用户的名称。若我们声明的用户名在系统中不是最新的,那个么脚本不会显示任何内容,所以不会出现错误 这是我的第一个脚本作业,我了解基本编程算法是如何工作的。不幸的是,我不熟悉powershell中的脚本。如果有人能帮我写剧本或展示一些指导教程,我将非常高兴。至于 显然,获得ADPrincipalGroupMembership不是办法 …这不是一个真正有效的声明,在这个网站上,您的用例上有几个问题与解答。基本上就是这样Powershell 显示每个用户所属组的脚本,powershell,powershell-ise,Powershell,Powershell Ise,我必须创建一个脚本,列出该用户所属的每个组,并显示指定的useronly本地组和帐户的名称。指定的用户名应该是脚本中的唯一参数。若我们不声明用户名,脚本应该使用运行脚本的用户的名称。若我们声明的用户名在系统中不是最新的,那个么脚本不会显示任何内容,所以不会出现错误 这是我的第一个脚本作业,我了解基本编程算法是如何工作的。不幸的是,我不熟悉powershell中的脚本。如果有人能帮我写剧本或展示一些指导教程,我将非常高兴。至于 显然,获得ADPrincipalGroupMembership不是办法
# Get users with base properties and their group membership, display user and group name
ForEach ($TargetUser in (Get-ADUser -Filter *))
{
"`n" + "-"*12 + " Showing group membership for " + $TargetUser.SamAccountName
Get-ADPrincipalGroupMembership -Identity $TargetUser.SamAccountName | Select Name
}
# Results
------------ Showing group membership for Administrator
Name
----
Domain Users
Administrators
...
------------ Showing group membership for Guest
Domain Guests
Guests
更新为OP
我使用cmdlet解释了您使用的内容。
如果您使用的是PowerShell v5,则已存在用于此的本地组cmdlet
Get-Command -Name *LocalUser*
# Results
CommandType Name
Cmdlet Disable-LocalUser
Cmdlet Enable-LocalUser
Cmdlet Get-LocalUser
Cmdlet New-LocalUser
Cmdlet Remove-LocalUser
Cmdlet Rename-LocalUser
Cmdlet Set-LocalUser
Get-Command -Name *LocalGroup*
# Results
CommandType Name
Cmdlet Add-LocalGroupMember
Cmdlet Get-LocalGroup
Cmdlet Get-LocalGroupMember
Cmdlet New-LocalGroup
Cmdlet Remove-LocalGroup
Cmdlet Remove-LocalGroupMember
Cmdlet Rename-LocalGroup
Cmdlet Set-LocalGroup
然后像这样做
Clear-Host
$LocalUserName = Read-Host -Prompt 'Enter a username'
# If no user is passed, list all
If($LocalUserName -eq '')
{
ForEach($GroupName in Get-LocalGroup)
{
Get-LocalGroupMember -Group "$($GroupName.Name)" |
Select @{n='GroupName';e={$($GroupName.Name)}},Name
}
}
Else
{
# process only the user passed
Get-LocalGroup |
%{
If(Get-LocalGroupMember -Group "$($_.Name)" -Member $LocalUserName -ErrorAction SilentlyContinue)
{
[PSCustomObject]@{
GroupName = $_.Name
Username = $LocalUserName
}
}
}
}
如果您使用的是较低版本,则可以使用PowerShellGallery.com模块,或直接使用ADSI。在这个网站和整个网络上都有很多关于这个的文章和样本
例如:
执行各种本地用户管理功能的模块
另见:
到目前为止你试过什么?一些代码显示你已经尝试过的东西将是可爱的。。。[咧嘴笑]我在搜索命令上浪费了一些时间。显然,获得ADPrincipalGroupMembership不是办法。现在我正在学习powershell语法。既然这是家庭作业,你的老师没有给你提供学习如何在powershell中编程的材料吗?请包括您迄今为止所做的尝试,以便我们能够提供帮助。包括出了什么问题以及您希望发生什么,以便我们能够帮助您学习。这不是一个完整的我的家庭作业网站。是的,我知道有些人会误解我,就像我只是想完成我的家庭作业:D。事实上,我们没有任何材料,也没有任何关于在powershell中编写脚本的讲座。所以我在问一些愚蠢的问题。抱歉:/I我只能在Microsoft.PowerShell.LocalAccounts模块内使用命令。无论如何,谢谢你。