Probleme mit DFSR-Membership und Powershell Invoke-Command
Hallo zusammen,
ich bin an einem Skript dran, welches Fileshares auf 2 Servern anlegt, danach DFS-N aktiviert und am Ende die DFS-R aktivieren soll zwischen den beiden Shares.
Wir haben eine Tiered-User Umgebung. D.h. das z.B. ein User in Tier 0 sich nur an den AD Controllern anmelden darf und nicht an Memberserver und ein Tier 1 User darf sich nur an den Memberservern anmelden, jedoch nicht an einem AD Controller. Es ist also gewünscht, dass sich der T0 z.B. an allen Servern anmelden darf. Zusätzlich haben wir mehrere Domains für z.B. die Infrastruktur, die Kundenservices und die User. Zwischen allen Domains besteht ein bidirektionaler Trust.
Das Skript wird auf einem AD Controller ausgeführt, da im Verlauf mehrere AD Gruppen in unterschiedlichen Domains angelegt werden müssen. Hierzu wird ein Konto benötigt, welche Zugriff auf das AD hat.
Es gibt jedoch auch Operationen die im Kontext eines T1 Users auf den Fileserver ausgeführt werden müssen. Dafür wird die Operation mit Invoke-Command auf den beiden Fileserver ausgeführt.
Das Skript ist fast komplett funktionsfähig leider hänge ich nun an genau einer Codezeile fest und ich habe keine Idee mehr, wie ich hier weiterkomme.
Ich poste mal die relevanten Teile des Codes. Beachtet dass, in der Variable $creds die T1 Credentials gespeichert sind und das Skript im T0 Kontext gestartet wird.
Wenn ich den Code nun ausführe wirft es mir folgenden Fehler:
Ich erhalte den Fehler sogar dann, wenn ich den Invoke-Command
selbst auf dem Fileserver ausführe.
Wenn ich das Skript auf dem AD Controller ausführe (ohne Invoke-Command) erhalte ich einen Access Denied Fehler:
Es funktioniert jedoch, wenn ich den Set-DFSRMembership Command auf dem Fileserver lokal ausführe. Dabei spielt es auch keine Rolle ob die Powershell elevated läuft oder nicht.
Ab diesem Zeitpunkt (wo der Befehl einmal fehlerfrei lief auf dem Fileserver), kann ich den Befehl auch lokal auf dem AD Controller ausführen und Einstellungen setzen.
Ich habe momentan leider keine Idee mehr was zu tun ist. In den Eventlogs steht auch nichts drin. Hat irgendjemand so einen Fall schon mal gehabt und hat eine Idee?
Vielen Dank an alle
Grüße
Michael
ich bin an einem Skript dran, welches Fileshares auf 2 Servern anlegt, danach DFS-N aktiviert und am Ende die DFS-R aktivieren soll zwischen den beiden Shares.
Wir haben eine Tiered-User Umgebung. D.h. das z.B. ein User in Tier 0 sich nur an den AD Controllern anmelden darf und nicht an Memberserver und ein Tier 1 User darf sich nur an den Memberservern anmelden, jedoch nicht an einem AD Controller. Es ist also gewünscht, dass sich der T0 z.B. an allen Servern anmelden darf. Zusätzlich haben wir mehrere Domains für z.B. die Infrastruktur, die Kundenservices und die User. Zwischen allen Domains besteht ein bidirektionaler Trust.
Das Skript wird auf einem AD Controller ausgeführt, da im Verlauf mehrere AD Gruppen in unterschiedlichen Domains angelegt werden müssen. Hierzu wird ein Konto benötigt, welche Zugriff auf das AD hat.
Es gibt jedoch auch Operationen die im Kontext eines T1 Users auf den Fileserver ausgeführt werden müssen. Dafür wird die Operation mit Invoke-Command auf den beiden Fileserver ausgeführt.
Das Skript ist fast komplett funktionsfähig leider hänge ich nun an genau einer Codezeile fest und ich habe keine Idee mehr, wie ich hier weiterkomme.
Ich poste mal die relevanten Teile des Codes. Beachtet dass, in der Variable $creds die T1 Credentials gespeichert sind und das Skript im T0 Kontext gestartet wird.
# Setup DFS-R Replication
New-DfsReplicationGroup -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -domainname $SvcDomain_FQDN
Add-DfsrMember -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -domainname $SvcDomain_FQDN $fileserver1
Add-DfsrMember -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -domainname $SvcDomain_FQDN $fileserver2
New-DfsReplicatedFolder -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -FolderName $foldername -domain $SvcDomain_FQDN -DfsnPath \\$SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername
Invoke-Command -computername $fileserver1 -Credential $creds -scriptblock {
param($SvcDomain_FQDN,$DFSNRootFolder,$dfsnfolder,$foldername,$fileserver1,$target_local)
Set-DfsrMembership -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -Foldername $foldername -ComputerName $fileserver1 -ContentPath $target_local -PrimaryMember $true -DomainName $SvcDomain_FQDN -force
} -ArgumentList $SvcDomain_FQDN,$DFSNRootFolder,$dfsnfolder,$foldername,$fileserver1,$target_local
Invoke-Command -computername $fileserver1 -Credential $creds -scriptblock {
param($SvcDomain_FQDN,$DFSNRootFolder,$dfsnfolder,$foldername,$fileserver2,$target_local)
Set-DfsrMembership -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -Foldername $foldername -ComputerName $fileserver2 -ContentPath $target_local -PrimaryMember $false -DomainName $SvcDomain_FQDN -force
} -ArgumentList $SvcDomain_FQDN,$DFSNRootFolder,$dfsnfolder,$foldername,$fileserver2,$target_local
Add-DfsrConnection -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -domainname $SvcDomain_FQDN -SourceComputerName $fileserver1 -DestinationComputerName $fileserver2
Wenn ich den Code nun ausführe wirft es mir folgenden Fehler:
Set-DfsrMembership : Could not edit the DFSR membership with domain: <DOMAIN>; replication group: <REPLICATION GROUP>; replicated folder: <FOLDER>; computer: <COMPUTER>; GUID: None specified. An operation error occurred. + CategoryInfo : NotSpecified: (DFSR membership...None specified.:String) [Set-DfsrMembership], DfsrException + FullyQualifiedErrorId : Set-DfsrMembership.OMException,Microsoft.DistributedFileSystemReplication.Commands.SetDfsrMembershipCommand
Ich erhalte den Fehler sogar dann, wenn ich den Invoke-Command
Invoke-Command -computername $fileserver1 -Credential $creds -scriptblock {
param($SvcDomain_FQDN,$DFSNRootFolder,$dfsnfolder,$foldername,$fileserver2,$target_local)
Set-DfsrMembership -GroupName $SvcDomain_FQDN\$DFSNRootFolder\$dfsnfolder\$foldername -Foldername $foldername -ComputerName $fileserver2 -ContentPath $target_local -PrimaryMember $false -DomainName $SvcDomain_FQDN -force
} -ArgumentList $SvcDomain_FQDN,$DFSNRootFolder,$dfsnfolder,$foldername,$fileserver2,$target_local
selbst auf dem Fileserver ausführe.
Wenn ich das Skript auf dem AD Controller ausführe (ohne Invoke-Command) erhalte ich einen Access Denied Fehler:
Set-DfsrMembership : Security cannot be set on the replicated folder. Access is denied At line:1 char:1 + Set-DfsrMembership -GroupName <GROUPNAME> ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (DFSR membership...None specified.:String) [Set-DfsrMembership], DfsrException + FullyQualifiedErrorId : DfsrCore.ThrowIfInconsistent,Microsoft.DistributedFileSystemReplication.Commands.SetDfsrMembershipCommand
Es funktioniert jedoch, wenn ich den Set-DFSRMembership Command auf dem Fileserver lokal ausführe. Dabei spielt es auch keine Rolle ob die Powershell elevated läuft oder nicht.
Ab diesem Zeitpunkt (wo der Befehl einmal fehlerfrei lief auf dem Fileserver), kann ich den Befehl auch lokal auf dem AD Controller ausführen und Einstellungen setzen.
Ich habe momentan leider keine Idee mehr was zu tun ist. In den Eventlogs steht auch nichts drin. Hat irgendjemand so einen Fall schon mal gehabt und hat eine Idee?
Vielen Dank an alle
Grüße
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 12756947111
Url: https://administrator.de/forum/probleme-mit-dfsr-membership-und-powershell-invoke-command-12756947111.html
Ausgedruckt am: 22.04.2025 um 12:04 Uhr
1 Kommentar