Active Directory Picker - Get-ADGroup kann nicht in den Typ konvertiert werden
Mahlzeit zusammen,
Im folgenden Skript erhalte ich immer die Meldung:
Get-ADGroup : "System.Object" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADGroup" konvertiert
werden, der für den Parameter "Identity" erforderlich ist. Die angegebene Methode wird nicht unterstützt.
Anscheinend kann der AD Picker die Auswahl nicht weitergeben und bricht immer ab. Wo genau liegt der Fehler? Welche Properties muss ich denn übergeben?
Im folgenden Skript erhalte ich immer die Meldung:
Get-ADGroup : "System.Object" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADGroup" konvertiert
werden, der für den Parameter "Identity" erforderlich ist. Die angegebene Methode wird nicht unterstützt.
Anscheinend kann der AD Picker die Auswahl nicht weitergeben und bricht immer ab. Wo genau liegt der Fehler? Welche Properties muss ich denn übergeben?
Function ADPicker
{
Add-Type -Path (Join-Path -Path (Split-Path $script:MyInvocation.MyCommand.Path) -ChildPath 'bin\CubicOrange.Windows.Forms.ActiveDirectory.dll')
$DialogPicker = New-Object CubicOrange.Windows.Forms.ActiveDirectory.DirectoryObjectPickerDialog
$DialogPicker.AllowedLocations = [CubicOrange.Windows.Forms.ActiveDirectory.Locations]::All
$DialogPicker.AllowedObjectTypes = [CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Groups,[CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Users,[CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Computers
$DialogPicker.DefaultLocations = [CubicOrange.Windows.Forms.ActiveDirectory.Locations]::JoinedDomain
$DialogPicker.DefaultObjectTypes = [CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Groups
$DialogPicker.ShowAdvancedView = $false
$DialogPicker.MultiSelect = $true
$DialogPicker.SkipDomainControllerCheck = $true
$DialogPicker.Providers = [CubicOrange.Windows.Forms.ActiveDirectory.ADsPathsProviders]::Default
$DialogPicker.AttributesToFetch.Add('samAccountName')
$DialogPicker.AttributesToFetch.Add('title')
$DialogPicker.AttributesToFetch.Add('department')
$DialogPicker.AttributesToFetch.Add('distinguishedName')
$DialogPicker.AttributesToFetch.Add('Identity')
$DialogPicker.AttributesToFetch.Add('objectSid')
$DialogPicker.AttributesToFetch.Add('DisplayName')
$DialogPicker.ShowDialog()
return $DialogPicker.Selectedobject
}
$AD = ADPicker
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
function Get-FolderRightsForAccount([string]$dn, [string]$rootfolder, [switch]$includeInheritedRights){
$sids = @()
$sids += (Get-ADObject $dn -Properties Name).Name.Value
$sids += Get-ADPrincipalGroupMembership $dn | select -Expand Name
$inherited = @{$true=($true,$false);$false=$false}[$includeInheritedRights.IsPresent]
(Get-ACL $rootfolder).Access | ?{try{$_.NameReference.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{$_.NameReference.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 $AD).Name -rootfolder $o -includeInheritedRights | ft -AutoSize
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 517545
Url: https://administrator.de/contentid/517545
Ausgedruckt am: 24.11.2024 um 07:11 Uhr
17 Kommentare
Neuester Kommentar
System.Object" kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADGroup" konvertiert
Die Fehlermeldung ist ja eindeutig, Get-AdGroup erwartet ja eine einzelne "Identity" und kein Array aus irgendwelchen Objekten, also nehme das erste Objekt aus dem Array und davon den Path (in dem ja laut deiner Aussage der distinguishedName dein steht)Get-FolderRightsForAccount -dn $AD.Path -rootfolder $o -includeInheritedRights | ft -AutoSize
Dann ists wohl jetzt kein Array mehr und du kannst die Eigenschaft direkt ansprechen und so übergeben
$AD.Path
$AD.Path
Get-FolderRightsForAccount -dn ([String]$AD.Path) -rootfolder $o -includeInheritedRights | ft -AutoSize
Wie sieht der DN denn exakt aus? Stammt der aus der aktuellen Domain oder einer anderen?
Müssen wir dir hier alles aus der Nase ziehen??
Müssen wir dir hier alles aus der Nase ziehen??
und weiter? Siehe mein letzter Code offensichtlich nicht richtig übernommen ...
Beantworte doch mal alle Fragen von meinen zwei letzten Posts, und korrigiere den Code mal so wie er jetzt oben steht (wandelt explizit in einen String um), wir bekommen von dir leider zu spärliche Infos zu den Objekttypen , deswegen müssen wir hier ein de Ecke raten . Du verwendest da ja ein Control das nicht alltäglich ist.
$AD | gm *
$AD | gm *
Zitat von @emeriks:
Ich dachte, es war klar, dass da ein Array kommt. Sonst hätte ich Dir doch nicht "$AD" geschrieben?
Hatte ich ihm oben auch schon geschrieben, aber offensichtlich war es bei diesem Versuch doch wieder kein Array, vermutlich hat er diesmal nur eine Gruppe ausgewählt.Ich dachte, es war klar, dass da ein Array kommt. Sonst hätte ich Dir doch nicht "$AD" geschrieben?
Wenn er mehrere Auswählen will dann muss er ja auch eine Foreach-Schleufe drum bauen das ist klar.
Wenn in der Property Path ja schon der DN der Gruppe drin steht reicht der ja , aber dazu verliert er auch kein weiteres Wort.
Leider bringt er nur unzureichende Infos zu Objekttypen usw. 🥵
Freitagsverboten.