#powershell TIP: Local vs Remote Background Jobs

It is common to use Start-Job to run a  background job against a remote machine via the -ScriptBlock parameter:

Start-Job -ScriptBlock { param($computer) Get-EventLog -LogName system -ComputerName $computer } -ArgumentList $computer

However, this always runs as a local BackgroundJob, consumes local resources and can be very slow.

Instead, consider using the -AsJob parameter of Invoke-Command to run the task as a RemoteJob on a remote host via -ComputerName i.e.

Invoke-Command -AsJob -ComputerName $computer -ScriptBlock { Get-EventLog -LogName system }

#powershell #skype4b Trunk Configuration

With New-CsTrunkConfiguration, a trunk can be created at the Global (default), site or pool (service) scope for a PSTN service from a PSTN gateway, IP-Public Branch Exchange (PBX) to a Session Border Controller (SBC) at the service provider.

Correspondingly, it is a simpe matter to run Get-CsTrunkConfiguration to get back a list of available trunk configuration information. However, executing this cmdlet with just the name of the trunk will fail:

PS > Get-CsTrunkConfiguration -Identity trunkName
Get-CsTrunkConfiguration: Cannot get item at this location. Get item at scopes: “Global, Site, Service”
Parameter name: Identity
At line:1 char:1
+ Get-CsTrunkConfiguration -Identity trunkName
+ ~~~
+ CategoryInfo : InvalidArgument: (Tag: trunkName:XdsIdentity)
[Get-CsTrunkConfiguration, ArgumentException
+ FullyQualifiedErrorId :BadLocation, Microsoft. Rtc.Management.Internal.GetCsTrunkConfigurationCmdlet

The solution is to always prefix the name with the trunk’s scope i. e.

Get-CsTrunkConfiguration site:trunkName

#powershell #skype4b PSTN Usage, Voice Policy & Route

Think of PSTN usage records as something which specify a class of call permitted in an organisation such as internal, local or international. Such records are used to associate with voice policies* and routes** to dictate usage of specific (gateway) routes by authorised users. A call can only be successful when a dialed number matches a route in a PSTN Usage.

A list of Public Switched Telephone Network, PSTN Usage records is accessible using the appropriately named Get-CsPstnUsage cmdlet. Because Global is the only identity applicable (to PSTN usages), you can basically retrieve available records via (Get-CsPstnUsage).Usage.

It is not possible to inspect the relationship between PSTN Usage, voice policy or route with a statement like Get-CsPstnUsage CH_Zurich. To resolve this, use Get-CsVoiceRoute or Get-CsVoicePolicy.

* assigned at the site or user scope where each voice policy must be linked to at least one PSTN usage record
** routes are assigned to telephone numbers

REFERENCE
Configure voice policies, PSTN usage records, and voice routes in Skype for Business
PSTN usage records in Lync Server 2013

#powershell #skype4b #msexchange List Mismatched Mail(box) Enabled User Email and SIP Addresses

#requires -version 3.0
###############################################################################
# Copyright (c) 201x-2018 leedesmond.com
# All Rights Reserved. Use at your own risk and responsibility.
# Version 1.00
#
# Get a list of mismatched mail(box) enabled user email and SIP addresses
# without SkypeforBusiness or Exchange Server PowerShell modules
#
###############################################################################
# Continue reading “#powershell #skype4b #msexchange List Mismatched Mail(box) Enabled User Email and SIP Addresses”

#powershell #skype4b Get List of Not Enabled Skype for Business Users (Without #skype4b Cmdlets)

#requires -version 3.0
###############################################################################
# Copyright (c) 201x-2018 leedesmond.com
# All Rights Reserved. Use at your own risk and responsibility.
# Version 1.00
#
# Get a list of not enabled Skype for Business Users (without SkypeForBusiness
# Module Cmdlets)
#
###############################################################################
# Continue reading “#powershell #skype4b Get List of Not Enabled Skype for Business Users (Without #skype4b Cmdlets)”

#powershell SNMP Services Administration (Part 5)

Putting into practice what we have discussed so far, this script illustrates how an administrator can use PowerShell remoting to configure/set SNMP settings on a bunch of Windows machines from a distance.

#requires -version 3.0
###############################################################################
# Copyright (c) 201x-2018 leedesmond.com
# All Rights Reserved. Use at your own risk and responsibility.
# Version 1.00
#
# Configure SNMP settings on multiple Windows machines remotely.
#
# REQUIREMENTS: PowerShell Remoting enabled on target hosts
#
###############################################################################
# Continue reading “#powershell SNMP Services Administration (Part 5)”

#powershell SNMP Services Administration (Part 4)

This script gathers the pieces discussed previously into a reusable PowerShell function Set-SNMP for the purpose of configuring SNMP settings on Windows machines.

#requires -version 3.0
###############################################################################
# Copyright (c) 201x-2018 leedesmond.com
# All Rights Reserved. Use at your own risk and responsibility.
# Version 1.00
#
# Function with self explanatory parameters to configure SNMP settings on
# Windows machines.
#
###############################################################################
# Continue reading “#powershell SNMP Services Administration (Part 4)”