Skip to main content

Microsoft Network Policy Server Synchronization Script

This powershell script is written for automating to export configuration from master NPS and then import it on a secondary NPS in order to keep a secondary NPS ready with latest configuration. Script must run on secondary node. The account that runs the script must be the member of both of the master and secondary servers local administrators group.

$nps_master = "master_nps_server" #Master Network Policy Server's HostName or IP Address
$nps_conf_dir = "C:\Tmp\NpsConf\" #XML configuration file store directory.
$nps_conf_path = "C:\Tmp\NpsConf\NpsConf-$nps_master.xml" #XML configuration file path.
$nps_conf_share_path = "\\$nps_master\Tmp\NpsConf\NpsConf-$nps_master.xml" #Master Network Policy Server's share path.
if (!(get-eventlog -logname "Application" -source "Nps-Config-Sync")) {new-eventlog -logname "Application" -source "Nps-Config-Sync"}
trap {write-eventlog -logname "Application" -eventID 0001 -source "Nps-Config-Sync" -EntryType "Error" -Message "NPS Synchronization Script Error: $_. The Script is $($MyInvocation.MyCommand.Definition)"; exit}
invoke-command -ComputerName $nps_master -ArgumentList $nps_conf_path -scriptBlock {param ($nps_conf_path) Export-NpsConfiguration -Path $nps_conf_path}
copy-item -path $nps_conf_share_path -destination $nps_conf_dir
get-item $nps_conf_path
Import-NpsConfiguration -Path $nps_conf_path
remove-item -path $nps_conf_share_path
remove-item -path $nps_conf_path
$success_message = "Network Policy Server Configuration is successfully synchronized from $nps_master. The Script is $($MyInvocation.MyCommand.Definition)"
write-eventlog -logname "Application" -eventID 0002 -source "Nps-Config-Sync" -EntryType "Information" -Message $success_message


Popular posts from this blog