# encoding: ascii
# api: powershell
# title: SNTP
# description: Get and Set functions for SNTP
# version: 1.0
# type: script
# author: a Monkey
# license: CC0
# function: Get-SNTPServer
# x-poshcode-id: 2604
# x-archived: 2012-12-29T04:30:20
# x-published: 2012-04-06T10:31:00
#
#

<#
.SYNOPSIS
Gets the SNTP servers a machine is configured to use
 
.DESCRIPTION
Gets the SNTP servers a machine is configured to use
 
.PARAMETER Server
The machine to get the SNTP Servers for
 
.EXAMPLE
PS C:\> Get-SNTPServer -Server MachineName
This is return the SNTP servers for MachienName
 
.EXAMPLE
PS C:\> Get-SNTPServer -server Machine1 | Set-SNTPServer -server Machine2
This will get the sntp server for Machine1 and set Machine2 to the same

.EXAMPLE
PS C:\> Get-Content servers.txt | Get-SNTPServer 
 
.NOTES
    NAME        :  Get-SNTPServer
    VERSION     :  1.0
    LAST UPDATED:  04/04/2011
    AUTHOR      :  a Monkey
 
.LINK
http://amonkeysden.tumblr.com/post/4393059808/sntp-module
 
#>
function Get-SNTPServer
{
    [cmdletbinding()]
    Param(
        [Parameter(
            Mandatory = $True,
            Position = 0,
            ParameterSetName = '',
            ValueFromPipeline = $True)]
        [string]$Server
    )
    [string] $z = net time \\$server /QUERYSNTP
    if (($z.contains("The current SNTP value is:"))) {
        #$out = "{0}: {1}" -f $Server,$z.split(" ")[5]
        #Write-Output $out
        Write-Output $z.split(" ")[5]
    } else {
        Write-Error "$z"
    }
}
 
<#
.SYNOPSIS
Sets the SNTP servers a machine is configured to use
 
.DESCRIPTION
Sets the SNTP servers a machine is configured to use
 
.PARAMETER Servers
The machines to set the SNTP Servers for
 
.PARAMETER $SNTPServerList
The machine to get the SNTP Servers for
 
.EXAMPLE
PS C:\> Set-SNTPServer -Server MachineName -SNTPServerList "dc1,dc2"
This will set the SNTP servers to DC1 and DC2 for MachienName
 
.EXAMPLE
PS C:\> Get-SNTPServer -server Machine1 | Set-SNTPServer -server Machine2
This will get the sntp server for Machine1 and set Machine2 to the same

.EXAMPLE
PS C:\> Get-Content servers.txt | Set-SNTPServer -SNTPServerList "dc1,dc2"

.NOTES
    NAME        :  Set-SNTPServer
    VERSION     :  1.0
    LAST UPDATED:  04/04/2011
    AUTHOR      :  a Monkey
 
.LINK
http://amonkeysden.tumblr.com/post/4393059808/sntp-module

#>
function Set-SNTPServer
{
    [cmdletbinding()]
    Param(
        [Parameter(
            Mandatory = $True,
            Position = 0,
            ParameterSetName = '',
            ValueFromPipeline = $True)]
        [string]$Server,
        [Parameter(
            Mandatory = $True,
            Position = 1,
            ParameterSetName = '',
            ValueFromPipeline = $True)]
        [string]$SNTPServerList
    )
    foreach ($s in $Server.Split(",")) 
    {
        [string] $z = net time \\$s /SETSNTP:$SNTPServerList
        if (($z.contains("The command completed successfully."))) {
            Write-Output $z
        } else {
            Write-Error $z
        }
    }
}
 
 
# export the functions to be used
Export-ModuleMember Set-SNTPServer
Export-ModuleMember Get-SNTPServer
