how to remove all OU from AD via powershell - powershell

I am testing powershell with active directory,
have created list of OU in particular domain, but unable to remove all the OU from AD, Want to remove all OU except built in from AD
below is the script i am using, but it is giving access denied-
using administrator id
Get-ADOrganizationalUnit -Filter {Name -notlike "Domain Controllers"} -SearchBase (Get-ADDomain).Distinguishedname -SearchScope OneLevel | Remove-ADOrganizationalUnit -Recursive -Confirm:$false

OU's are protected by default, you have to remove that flag before deleting:
Set-ADObject -ProtectedFromAccidentalDeletion $false

Related

PowerShell to delete AD Object based on timestamp?

How can I delete all the ADObject (AD User / AD Computer object) in a specific OU and below based on the specific Modified time?
Starting OU location Canonical Name:
Domain.com/OffBoarded Users
Domain.com/Old Computers
Using this command: https://learn.microsoft.com/en-us/powershell/module/activedirectory/remove-adobject
Start by getting the AD objects you want to remove, then pipe it to the remove command.
Get-ADObject command: https://learn.microsoft.com/en-us/powershell/module/activedirectory/get-adobject?view=windowsserver2022-ps
Look at example 2's "Search Base" and example 3's "specified attribute"
Sample:
$date = (Get-Date).AddDays(-30)
Get-ADObject -SearchBase 'CN=Offboarded Users,DC=Domain,DC=Com' -searchScope 2 -filter "whenChanged -le $date" | Remove-ADObject
Get-ADObject -SearchBase 'CN=Old Computers,DC=Domain,DC=Com' -searchScope 2 -filter "whenChanged -le $date" | Remove-ADObject

How to check if a user is in a OU in Powershell

I'm trying to know if a specific user is member of a specific OU.
Use the -SearchBase parameter with the Get-ADUser cmdlet from the ActiveDirectory RSAT module to narrow your query to a specific subtree:
$ADUser = Get-ADUser -Filter "SamAccountName -eq 'lmontoya'" -SearchBase "OU=TargetOU,DC=domain,DC=tld"
Beware that it will default to a recursive subtree search by default, so if you need to test whether the user is present directly under that OU (as opposed to just somewhere under the OU), you need to specify a -SearchScope as well:
$ADUser = Get-ADUser -Filter "SamAccountName -eq 'lmontoya'" -SearchBase "OU=TargetOU,DC=domain,DC=tld" -SearchScope OneLevel
If the user isn't found with the specified criteria, $ADUser will be empty
The SearchBase/SearchScope parameters work with all the query cmdlets in the module, so you can use the same approach for computers or OUs or whatever else you need to find in a specific container:
# Query all the computer account objects residing at "OU=TargetOU,DC=domain,DC=tld"
Get-ADComputer -Filter * -SearchBase "OU=TargetOU,DC=domain,DC=tld" -SearchScope OneLevel

Enable prevention of accidental deletions of DNS zones stored in Active Directory Domain Services (ADDS)

I want prevent accidental deletion for my dns zones on my domain. I have try to perform this action via powershell but i have some doubts.
I have used the following command, i found this on Microsoft:
Get-ADobject -Server "<DomainController_fqdn>" -Filter {objectclass -eq "DNSZone"} -SearchBase "DC=DomainDNSZones,<DomainDN>" | Set-ADObject -ProtectedFromAccidentalDeletion $true
Bellow is this command adapted to my domain:
Get-ADobject -Server "myservername+fqdn" -Filter {objectclass -eq "mydominzone"} -SearchBase "DC=DomainDNSZones,DC=aa,DC=bb,DC=cc" | Set-ADObject -ProtectedFromAccidentalDeletion $true
The script seems to run ok , but I don't receive any message that that fag was changed on "true".
How can i check if this setting was applied or not?
You just have to tell Get-ADObject to show that property with the -Properties parameter:
Get-ADobject -Server "myservername+fqdn" `
-Filter {objectclass -eq "mydominzone"} `
-SearchBase "DC=DomainDNSZones,DC=aa,DC=bb,DC=cc" `
-Properties ProtectedFromAccidentalDeletion
Interestingly, there isn't actually any flag in Active Directory for that. All it does is add a "deny delete" permission for "Everyone" to the account. But both Set-ADObject and Get-ADObject translate that into a property that you can set and read. And even AD Users and Computers shows it as a checkbox.

Remove full access permissions of all disabled users on shared mailboxes with exchange management shell

I’m looking for a powershell exchange script to remove Full access permissions of all disabled users on all shared mailboxes in a specific OU.
This is what I got so far
Remove-MailboxPermission -Identity Sharedmailbox -AccessRights Fullaccess -InheritanceType all -user DisabledUser -Confirm:$false | where {$_.UseraccountControl -like "*accountdisabled*"}
Its seems to work but I’m not sure about the last piece of het script if it will check for “accountdisabled”
Then I created a variable so it will check only one specific OU
$ou = Get-ADUser -SearchBase "OU=Functional Mailboxes,OU=Generalaccounts,DC=DOMAIN,DC=COM" -Filter * foreach ($user in $ou)
Remove-MailboxPermission -Identity "$ou" -AccessRights Fullaccess -InheritanceType all -Confirm:$false | where {$_.UseraccountControl -like "*accountdisabled*"}
The script is checking the right OU but I'm still looking for the last part where it will automatically remove full access permissions of the disabled users ONLY.
Can someone show me the way?
Instead of trying to screen for disabled users after removing the mailbox permissions (which is what your Remove-MailboxPermission ... | Where-Object ... appears to be intended to do - except that the way you wrote it, it's only checking for disabled state after removing the permissions), try selecting for the disabled accounts first, then passing only the disabled accounts to Remove-MailboxPermission:
Get-ADUser -SearchBase ... -filter {Enabled -eq $false} | Remove-Mailbox ...
(replacing ... with the appropriate SearchBase or parameters for Remove-Mailbox, using $_ for the identity of the ADUser whose mailbox permissions you're removing.)

How to move a user to a new Organizational Unit

Using the command line, how can I:
Move a user to a new Organizational Unit?
Get the current Organizational Unit of a user?
Get-ADUser UserName | Move-ADObject -TargetPath (Get-ADOrganizationalUnit -Filter "Name -eq 'Your OU Name'")
Get-ADUser UserName | Select DistinguishedName
This may help you: Move Active Directory users with PowerShell
Use the ActiveDirectory-Module of Powershell:
Import-Module activedirectory
Move-ADObject -Identity "CN=John Doe,OU=Accounting,DC=Fabrikam,DC=com" -TargetPath "OU=NewOU,DC=Fabrikam,DC=com"
See: http://go.microsoft.com/fwlink/p/?linkid=291059
And:
Import-Module activedirectory
Get-ADUser -Identity foobar|FT DistinguishedName
See: https://technet.microsoft.com/library/251aa5e1-8d5d-4eda-82b5-f0092b44ec3f%28v=wps.630%29.aspx
In the second example you need to do some string handling to get the OU