powershell 活动目录选择器

时间:2021-03-17 09:12:36

标签: powershell

实际上我有一个 powershell 脚本来分析文件服务器上的 ntfs 权限。我输入组名,指定文件夹,然后我得到列表。现在我想实现一个像这样的活动目录选择器对话框而不是输入组名 enter image description here

是否有任何 powershell 代码可以添加到我的脚本中?这就是我所拥有的。

$gruppe = read-Host "group name"

Function Get-Folder($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null
$Ordnername = New-Object System.Windows.Forms.FolderBrowserDialog
$Ordnername.Description = "Ordner auswählen"
$Ordnername.rootfolder = "MyComputer"
if($Ordnername.ShowDialog() -eq "OK")
{
    $Ordner += $Ordnername.SelectedPath
}
return $Ordner
}
$o = Get-Folder
write-host


function Get-FolderRightsForAccount([string]$dn, [string]$rootfolder,     [switch]$includeInheritedRights){
$sids = @()
$sids += (Get-ADObject $dn -Properties objectSid).objectSid.Value
$sids += Get-ADPrincipalGroupMembership $dn | select -Expand GroupName
$inherited = @{$true=($true,$false);$false=$false}[$includeInheritedRights.IsPresent]
(Get-ACL $rootfolder).Access | ?{try{$_.IdentityReference.Translate([System.Security.Principal.SecurityIdentifier]).Value -in $sids -and $_.IsInherited -in $inherited}catch{}} | select @{n='Folder';e={$rootfolder}},AccessControlType,@{n='Rights';e={$_.FileSystemRights}}
gci $rootfolder -Recurse -Directory -PipelineVariable f | %{
    (Get-ACL $_.Fullname).Access | ?{try{$_.IdentityReference.Translate([System.Security.Principal.SecurityIdentifier]).Value -in $sids -and $_.IsInherited -in $inherited}catch{}} | select @{n='Folder';e={$f.Fullname}},AccessControlType,@{n='Rights';e={$_.FileSystemRights}}
}
   }

  Get-FolderRightsForAccount -dn (Get-ADGroup $Gruppe).DistinguishedName -rootfolder $o -includeInheritedRights | ft -AutoSize 

1 个答案:

答案 0 :(得分:0)

它不像所示的选择器,但可能更有用。您可以使用 cmdlet Out-GridView。您可以允许选择多项或限制为一项。您也可以对列表进行过滤和/或排序。

$selectedgroup = Get-ADGroup -Filter * |
    Select-Object -Property Name, GroupCategory,GroupScope, SamAccountName,DistinguishedName |
        Sort-Object -Property Name | Out-GridView -OutputMode Single -Title "Please choose a group"

if(!$selectedgroup){
    Write-Host "No group was selected" -ForegroundColor Yellow
}
相关问题