Powershell 显示每个用户所属组的脚本

Powershell 显示每个用户所属组的脚本,powershell,powershell-ise,Powershell,Powershell Ise,我必须创建一个脚本,列出该用户所属的每个组,并显示指定的useronly本地组和帐户的名称。指定的用户名应该是脚本中的唯一参数。若我们不声明用户名,脚本应该使用运行脚本的用户的名称。若我们声明的用户名在系统中不是最新的,那个么脚本不会显示任何内容,所以不会出现错误 这是我的第一个脚本作业,我了解基本编程算法是如何工作的。不幸的是,我不熟悉powershell中的脚本。如果有人能帮我写剧本或展示一些指导教程,我将非常高兴。至于 显然,获得ADPrincipalGroupMembership不是办法

我必须创建一个脚本,列出该用户所属的每个组,并显示指定的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模块内使用命令。无论如何,谢谢你。