Skip to content

Instantly share code, notes, and snippets.

amandadebler / Get-AudioCodesSBAVersion.ps1
Created May 16, 2016
Gets the version of all the SBAs in your Lync/Skype for Business topology using their web interfaces, so it works even if they're locked down. Only works for AudioCodes SBAs so far.
View Get-AudioCodesSBAVersion.ps1
(Get-CsPool).where({$ -like "*registrar*" -and ${$_ -like "WebServer*"}).count -eq 0}).computers | foreach { (Invoke-WebRequest -Uri "http://$_/Home/LogOn").content -match "(1\.\d+\.\d+\.\d+)" | out-null; [pscustomobject]@{PSTypeName='SBAVersion'; ComputerName = $_; Version = $matches[0] } }
amandadebler / Get-SkypeServersByRole.ps1
Last active Jun 3, 2016
Snippets to get a list of computers by role in Skype for Business/Lync topology
View Get-SkypeServersByRole.ps1
$SBAs = (Get-CsPool).where({$ -like "*registrar*" -and ${$_ -like "WebServer*"}).count -eq 0}).computers
$frontEndServers = (Get-CsPool).where({$ -like "*registrar*" -and $ -like "Conferencing*"}).computers
$directorServers = (Get-CsPool).where({$ -like "*registrar*" -and $ -like "WebServer*" -and ${$_ -like "Conferencing*"}).count -eq 0}).computers
$mediationServers = (Get-CsPool).where({$ -like "*Mediation*" -and ${$_ -like "registrar*"}).count -eq 0}).computers
$edgeServers = (Get-CsPool).where({$ -like "*Edge*"}).computers
# Limitation: does not explore the Office Web Apps Farm for individual servers
$OfficeWebAppServers = (Get-cspool).where({$ -like "*WacServer*"}).computers
# Filters out backup PSTN trunks to pair gateways with secondard Mediation Services - only shows PSTN trunks with "real" FQDNs
amandadebler / Get-UMExtensionFromSkype.ps1
Last active Jun 15, 2016
Finding who has an extension on their Exchange UM mailbox when they don't have it on their Skype Line URI
View Get-UMExtensionFromSkype.ps1
<# Who has that Exchange UM extension?
The error when attempting to Enable-UMMailbox:
Extension 2233 is already assigned to another user on dial plan Nuremberg or on an equivalent dial
Get-CsAdPrincipal continues to be FAST: about 40-50ms against my real-life 40k+ user AD
Get-CsAdPrincipal -LDAPFilter '(proxyAddresses=eum:2233;'
amandadebler / NewCsAnalogDevice.ps1
Last active Jul 16, 2016
Create a new CsAnalogDevice to integrate an outside phone number into Skype for Business
View NewCsAnalogDevice.ps1
New-CsAnalogDevice -LineURI 'tel:+4915112345678' -DisplayName 'Maintenance Crew' `
-OU '' -Gateway '' -SipAddress `
'' -RegistrarPool '' `
-AnalogFax:$false -DomainController nue-dc01
amandadebler / BootlegSkypeTopology.ps1
Last active Feb 28, 2017
Getting Skype server-related info with only read access to Active Directory
View BootlegSkypeTopology.ps1
# Using native AD module
$configurationContainer = 'CN=Configuration,'+ (((get-adforest).name.split('.') | foreach {"DC=$_"}) -join ',')
# All pools, whether Director, FrontEnd or SBA
$rawPools = get-adobject -LDAPFilter '(objectClass=msrtcsip-pool)' -SearchBase $configurationContainer -Properties 'name','dnshostname','msrtcsip-pooldata','msrtcsip-pooldisplayname','distinguishedname'
# An entry for each combination of pool or member server and several service types
$trustedServices = get-adobject -LDAPFilter '(objectclass=msrtcsip-trustedservice)' -SearchBase $configurationContainer -Properties 'msrtcsip-routingpooldn','msrtcsip-trustedServerFQDN','msrtcsip-trustedserviceport','msrtcsip-trustedservicetype'
# All pools and their member servers (if Enterprise)
amandadebler / PowerShellAutomaticVariables.txt
Created Apr 21, 2017
Variables listed in about_automatic_variables, without initial $
View PowerShellAutomaticVariables.txt
amandadebler / BootlegSkypeObjects.ps1
Last active May 11, 2017
More Bootleg fun, this time with Users and other Endpoints - No Skype Admin required!
View BootlegSkypeObjects.ps1
function Get-BootlegAllUsers {
# This is 2.5 times faster than Get-ADUser -LDAPFilter '(&(msrtcsip-primaryuseraddress=*)(!msrtcsip-ownerurn=*))'
Get-ADObject -LDAPFilter '(&(msrtcsip-userenabled=TRUE)(&(objectclass=User)(!msrtcsip-ownerurn=*)))' -Properties 'msrtcsip-line','msrtcsip-privateline',displayName,'msrtcsip-primaryuseraddress' | Select-Object -Property name, displayName, @{n='PhoneNumber';e={$_.'msrtcsip-line'}}, @{n='PrivateLine';e={$_.'msrtcsip-privateline'}}, @{n='SIPAddress';e={$_.'msrtcsip-primaryuseraddress'}}
function Get-BootlegAllCommonAreaPhones {
Get-ADObject -LDAPFilter '(&(msrtcsip-userenabled=TRUE)(&(objectclass=Contact)(msrtcsip-ownerurn=urn:device:commonareaphone)))'
# Includes default RGS objects; filter for things that have a phone number if you only want "real" ones
View Ignore-SSLErrors.ps1
$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
Add-Type -AssemblyName System.Web
Add-Type -AssemblyName system.Security
Add-Type -AssemblyName System
Add-Type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
amandadebler / bamf_histograms
Last active Jan 26, 2019 — forked from ynux/bamf_histograms
English translation of landing page
View bamf_histograms
<p>On this page, we present the <a href="äftsstatistik/asylgeschaeftsstatistik-node.html">decision statistics of the BAMF</a> (Bundesagentur für Migration und Flüchtlinge - German federal agency for immigration and refugees) as histograms. They are supplemented monthly, at present most of them go through October. The new statistics should be published in the middle of the following month; the webpage is usually updated by the end of the month. Recent data and the numbers for countries from which fewer asylum seekers come can be found here: <a href="">Interactive Dashboard</a> .</p>
<p>For each country, we offer the link to the latest German national report from Amnesty International. The graphics for 2015 to 2016 can be found for most countries on <a href="">this page (German only)</a> &nbsp;</p>
<p><a href="#Afghanistan">Afghanistan</a> | <a href="#Syrien">Syr
amandadebler / CVE-2019-5736-hotfix.ps1
Created Feb 13, 2019
For CVE-2019-5736 (runc container breakout)
View CVE-2019-5736-hotfix.ps1
# works with both Get-AzAks cluster object and az aks list | ConvertFrom-Json PSCustomObjects
function Get-AKSHotfixVersion {
$hotfixVersions = @{'12'='1.12.5'; '11'='1.11.7'; '10'='1.10.12'; '9'='1.9.11'}
foreach ($cluster in $AKSCluster) {
$currentVersion = $cluster.KubernetesVersion
[string]$majorRelease = $currentVersion.split('.')[1]
$hotfixVersion = $hotfixVersions.$majorRelease