Public/Set-PSSlackConfig.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
function Set-PSSlackConfig {
    <#
    .SYNOPSIS
        Set PSSlack module configuration.
 
    .DESCRIPTION
        Set PSSlack module configuration, and $PSSlack module variable.
 
        This data is used as the default Token and Uri for most commands.
 
        If a command takes either a token or a uri, tokens take precedence.
 
        WARNING: Use this to store the token or uri on a filesystem at your own risk.
                 We use the DPAPI to store this.
 
    .PARAMETER Token
        Specify a Token to use
 
        Encrypted with the DPAPI
 
    .PARAMETER Uri
        Specify a Uri to use
 
        Encrypted with the DPAPI
 
    .PARAMETER ArchiveUri
        Archive URI. Generally, https://<TEAMNAME>.slack.com/archives/
 
        Used to generate a link to a specific archive URI, where appropriate
 
    .PARAMETER Proxy
        Proxy to use with Invoke-RESTMethod
 
    .PARAMETER Path
        If specified, save config file to this file path. Defaults to PSSlack.xml in the user temp folder.
 
    .FUNCTIONALITY
        Slack
    #>

    [cmdletbinding()]
    param(
        [string]$Uri,
        [string]$Token,
        [string]$ArchiveUri,
        [string]$Proxy,
        [string]$Path = "$env:TEMP\$env:USERNAME-$env:COMPUTERNAME-PSSlack.xml"
    )

    Switch ($PSBoundParameters.Keys)
    {
        'Uri'        { $Script:PSSlack.Uri = $Uri }
        'Token'      { $Script:PSSlack.Token = $Token }
        'ArchiveUri' { $Script:PSSlack.ArchiveUri = $ArchiveUri }
        'Proxy'      { $Script:PSSlack.Proxy = $Proxy }
    }

    Function Encrypt {
        param([string]$string)
        if($String -notlike '')
        {
            ConvertTo-SecureString -String $string -AsPlainText -Force
        }
    }

    #Write the global variable and the xml
    $Script:PSSlack |
        Select-Object -Property ArchiveUri,
                                @{l='Uri';e={Encrypt $_.Uri}},
                                @{l='Token';e={Encrypt $_.Token}},
                                Proxy |
        Export-Clixml -Path $Path -force

}