CSS Exchange is for Exchange Server support tools and scripts.

Microsoft Exchange Server is a mail server and calendaring server developed by Microsoft. It runs exclusively on Windows Server operating systems. The first version was called Exchange Server 4.0, to position it as the successor to the related Microsoft Mail 3.5. Exchange initially used the X.400 directory service but switched to Active Directory later. Until version 5.0 it came bundled with an email client called Microsoft Exchange Client. This was discontinued in favor of Microsoft Outlook.

Exchange Server primarily uses a proprietary protocol called MAPI to talk to email clients, but subsequently added support for POP3, IMAP, and EAS. The standard SMTP protocol is used to communicate to other Internet mail servers. Exchange Server is licensed both as on-premises software and software as a service (SaaS). In the on-premises form, customers purchase client access licenses (CALs); as SaaS, Microsoft charges a monthly service fee instead.


  • Merge pull request 34 from microsoft/main

$alreadySelectedTags = $null

if (Test-Path $outputPath) {
$alreadySelectedTags = GetTagsFromFile $outputPath
$alreadySelectedTags = GetTagsFromFile (Get-Content $outputPath)

if ($null -ne $alreadySelectedTags) {

($_.User.DisplayName -ne "Default") -and
($_.User.DisplayName -ne "Anonymous") -and
($null -eq $_.User.ADRecipient) -and
($_.User.UserType -eq "Unknown")
($_.User.UserType.ToString() -eq "Unknown")
) {
$badPermissions += [PSCustomObject]@{
Identity = $identity

$justFinished = @($jobsRunning | Where-Object { $_.State -ne "Running" })
if ($justFinished.Count -gt 0) {
foreach ($job in $justFinished) {
Receive-Job $job
$result = Receive-Job $job
Write-Host $job.Name "job finished."
Remove-Job $job -Force
$jobResults += $job
$jobResults += $result

$jobsRunning = @($jobsRunning | Where-Object { -not $justFinished.Contains($_) })

if ($badPermissions.Count -gt 0) {
$badPermissionsFile = Join-Path $PSScriptRoot "InvalidPermissions.csv"
$badPermissions | Export-Csv -Path $badDumpsterFile -InputObject $badPermissions -NoTypeInformation
$badPermissions | Export-Csv -Path $badPermissionsFile -NoTypeInformation

Write-Host $badPermissions.Count "invalid permissions were found. These are listed in the following CSV file:"
Write-Host $badDumpsterFile -ForegroundColor Green
Write-Host $badPermissionsFile -ForegroundColor Green
Write-Host "The invalid permissions can be removed using the RemoveInvalidPermissions script as follows:"
Write-Host ".\RemoveInvalidPermissions.ps1 $badPermissionsFile"

if ($null -eq $result) {
$mailEnabledFoldersWithNoADObject += $ipmSubtreeMailEnabled[$i]
} else {
$mailPublicFoldersLinked.Add($result.Guid.ToString(), $result)
$mailPublicFoldersLinked.TryAdd($result.Guid.ToString(), $result) | Out-Null

Write-Host "but are not linked to any public folder. These are listed in a file called:"
Write-Host $mailPublicFoldersToDeleteFile -ForegroundColor Green
Write-Host "After confirming the accuracy of the results, you can delete them with the following command:"
Write-Host "Get-Content `"$mailPublicFoldersToDeleteFile`" | % { ([ADSI](`"LDAP://`$_`")).DeleteTree() }" -ForegroundColor Green
Write-Host "Get-Content `"$mailPublicFoldersToDeleteFile`" | % { `$folder = ([ADSI](`"LDAP://`$_`")); `$parent = ([ADSI]`"`$(`$folder.Parent)`"); `$parent.Children.Remove(`$folder) }" -ForegroundColor Green
} else {
Write-Host "No orphaned MailPublicFolders were found."

Other changes:

  • Merge pull request #33 from microsoft/bilong-extra
  • Merge branch ‘main’ into bilong-extra
  • Merge pull request #32 from microsoft/bilong-badpermission
  • Load last configured tags properly
  • Merge branch ‘main’ into bilong-badpermission
  • SourceSideValidation fixes
  • Merge pull request #31 from microsoft/bilong-validatemailenabled
  • Merge branch ‘main’ into bilong-validatemailenabled
  • Fixes #30

Download (v21.02.22.1821)