I don’t know about your habits, but one of mine is filling my PowerShell profile with all kinds of good stuff. Here are a few of my favorites for ADFS.
function Copy-ADFSClaimRules { [CmdletBinding()] Param ( # Param1 help description [Parameter(Mandatory=$true, ValueFromPipeline=$false, Position=0)] [string] $SourceRelyingPartyTrustName, [Parameter(Mandatory=$true, ValueFromPipeline=$false, Position=1)] [string] $DestinationRelyingPartyTrustName ) Begin { } Process { $SourceRPT = Get-AdfsRelyingPartyTrust -Name $SourceRelyingPartyTrustName $DestinationRPT = Get-AdfsRelyingPartyTrust -Name $DestinationRelyingPartyTrustName if(!$SourceRPT) { Write-Error "Could not find $SourceRelyingPartyTrustName" } elseif(!$DestinationRPT) { Write-Error "Could not find $DestinationRelyingPartyTrustName" } Set-AdfsRelyingPartyTrust -TargetRelyingParty $DestinationRPT -IssuanceTransformRules $SourceRPT.IssuanceTransformRules -IssuanceAuthorizationRules $SourceRPT.IssuanceAuthorizationRules -DelegationAuthorizationRules $SourceRpT.DelegationAuthorizationRules } End { } } function Get-AdfsTokenSigningThumbprint { [CmdletBinding()] Param ( # Param1 help description [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$false, Position=0)] $ADFS ) Begin { } Process { $metadata = Invoke-RestMethod -Uri ("https://{0}/FederationMetadata/2007-06/FederationMetadata.xml" -f $ADFS) $tempfile = "{0}\adfsTempCert.cer" -f $env:temp $metadata.EntityDescriptor.Signature.KeyInfo.X509Data.X509Certificate | Set-Content -Path $tempfile $cert = (New-Object System.Security.Cryptography.X509Certificates.X509Certificate2) $cert.Import($tempfile) return $cert.Thumbprint } End { } } function Copy-AdfsRelyingPartyTrust { [CmdletBinding()] [OutputType([int])] Param ( [Parameter(Mandatory=$true, ValueFromPipeline=$false, Position=0)] $SourceRelyingPartyTrustName, [Parameter(Mandatory=$true, ValueFromPipeline=$false, Position=1)] $NewRelyingPartyTrustName, [Parameter(Mandatory=$true, ValueFromPipeline=$false, Position=2)] $NewRelyingPartyTrustIdentifier ) Begin { } Process { $SourceRelyingPartyTrust = Get-AdfsRelyingPartyTrust -Name $SourceRelyingPartyTrustName $exceptedAttributes = @("ConflictWithPublishedPolicy","OrganizationInfo","ProxyEndpointMappings","LastUpdateTime","PublishedThroughProxy","LastMonitoredTime") $parameters = @{} $SourceRelyingPartyTrust | Get-Member -MemberType Property | where{$_.name -notin $exceptedAttributes} | foreach { if($SourceRelyingPartyTrust.($_.Name) -ne $null) { $parameters[$_.Name] = $SourceRelyingPartyTrust.($_.Name) } } $parameters.Name = $NewRelyingPartyTrustName $parameters.Identifier = $NewRelyingPartyTrustIdentifier Add-AdfsRelyingPartyTrust @parameters } End { } }