diff --git a/Docs/Get-DuoAccountEdition.md b/Docs/Get-DuoAccountEdition.md index 1bb54dc..e0d4c51 100644 --- a/Docs/Get-DuoAccountEdition.md +++ b/Docs/Get-DuoAccountEdition.md @@ -1,29 +1,29 @@ --- external help file: DuoSecurity-help.xml Module Name: DuoSecurity -online version: https://duo.com/docs/accountsapi#set-telephony-credits +online version: https://duo.com/docs/accountsapi#get-edition schema: 2.0.0 --- # Get-DuoAccountEdition ## SYNOPSIS -Set Telephony Credits +Get Edition ## SYNTAX ``` -Get-DuoAccountEdition [-AccountId] [-Credits] [-WhatIf] [-Confirm] [] +Get-DuoAccountEdition [-AccountId] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION -Sets the telephony credits for a child account. +Returns the edition for a child account. ## EXAMPLES ### EXAMPLE 1 ``` -Set-DuoAccountTelephonyCredits -AccountId SOMEACCOUNTID -Credits +Get-DuoAccounts | Select-Object name,account_id, @{n='edition'; e={($_ | Get-DuoAccountEdition).edition}} ``` ## PARAMETERS @@ -44,21 +44,6 @@ Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False ``` -### -Credits -{{ Fill Credits Description }} - -```yaml -Type: Int32 -Parameter Sets: (All) -Aliases: - -Required: True -Position: 2 -Default value: 0 -Accept pipeline input: True (ByPropertyName) -Accept wildcard characters: False -``` - ### -WhatIf Shows what would happen if the cmdlet runs. The cmdlet is not run. @@ -95,13 +80,13 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable ## INPUTS +### PSCustomObject. Duo Accounts object ## OUTPUTS +### PSCustomObject. Returns a Duo Response object. ## NOTES -Any additional credits added to the child account are transferred from the parent account. -For example, if the child account has 100 credits and it is then set to 300 credits, then 200 credits are deducted from the parent's balance and added to the child's balance. ## RELATED LINKS -[https://duo.com/docs/accountsapi#set-telephony-credits](https://duo.com/docs/accountsapi#set-telephony-credits) +[https://duo.com/docs/accountsapi#get-edition](https://duo.com/docs/accountsapi#get-edition) diff --git a/Docs/Get-DuoAccountID.md b/Docs/Get-DuoAccountID.md new file mode 100644 index 0000000..be89b35 --- /dev/null +++ b/Docs/Get-DuoAccountID.md @@ -0,0 +1,55 @@ +--- +external help file: DuoSecurity-help.xml +Module Name: DuoSecurity +online version: https://duo.com/docs/accountsapi#get-edition +schema: 2.0.0 +--- + +# Get-DuoAccountID + +## SYNOPSIS +Get Account ID # from Duo API hostname + +## SYNTAX + +``` +Get-DuoAccountID [[-ApiHost] ] [] +``` + +## DESCRIPTION +Converts hexidecimal hostname to decimal format + +## EXAMPLES + +### EXAMPLE 1 +``` +Get-DuoAccountID -ApiHost api-01ab23cd.duosecurity.com +``` + +## PARAMETERS + +### -ApiHost +API hostname to get Account ID # for + +```yaml +Type: String +Parameter Sets: (All) +Aliases: api_hostname + +Required: False +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS diff --git a/Docs/Get-DuoAccounts.md b/Docs/Get-DuoAccounts.md index 31d868d..85a6ca8 100644 --- a/Docs/Get-DuoAccounts.md +++ b/Docs/Get-DuoAccounts.md @@ -13,7 +13,7 @@ Retrieve Accounts ## SYNTAX ``` -Get-DuoAccounts [] +Get-DuoAccounts [-IncludeEdition] [] ``` ## DESCRIPTION @@ -28,6 +28,21 @@ Get-DuoAccounts ## PARAMETERS +### -IncludeEdition +{{ Fill IncludeEdition Description }} + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + ### CommonParameters This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). diff --git a/Docs/Get-DuoAuthProxyLogs.md b/Docs/Get-DuoAuthProxyLogs.md new file mode 100644 index 0000000..6d04ade --- /dev/null +++ b/Docs/Get-DuoAuthProxyLogs.md @@ -0,0 +1,91 @@ +--- +external help file: DuoSecurity-help.xml +Module Name: DuoSecurity +online version: https://duo.com/docs/adminapi#authentication-logs +schema: 2.0.0 +--- + +# Get-DuoAuthProxyLogs + +## SYNOPSIS +This script reads Duo Auth Proxy log files + +## SYNTAX + +### List +``` +Get-DuoAuthProxyLogs [-ListLogs] [] +``` + +### Logs +``` +Get-DuoAuthProxyLogs [-LogName ] [-Search ] [] +``` + +## DESCRIPTION +Reads in log files from the designated log path and parses the entries from the standard log file format or json in the case of ssoevents + +## EXAMPLES + +### EXAMPLE 1 +``` +Get-DuoAuthProxyLogs -LogName ssoevents -Search test +``` + +## PARAMETERS + +### -ListLogs +List available log files + +```yaml +Type: SwitchParameter +Parameter Sets: List +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LogName +Name of log to get + +```yaml +Type: String +Parameter Sets: Logs +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Search +Search object for string + +```yaml +Type: String +Parameter Sets: Logs +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS diff --git a/Docs/Get-DuoInstallFileInfo.md b/Docs/Get-DuoInstallFileInfo.md new file mode 100644 index 0000000..1dbe165 --- /dev/null +++ b/Docs/Get-DuoInstallFileInfo.md @@ -0,0 +1,60 @@ +--- +external help file: DuoSecurity-help.xml +Module Name: DuoSecurity +online version: https://duo.com/docs/adminapi#get-group-info +schema: 2.0.0 +--- + +# Get-DuoInstallFileInfo + +## SYNOPSIS +{{ Fill in the Synopsis }} + +## SYNTAX + +``` +Get-DuoInstallFileInfo [[-Url] ] [] +``` + +## DESCRIPTION +{{ Fill in the Description }} + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> {{ Add example code here }} +``` + +{{ Add example description here }} + +## PARAMETERS + +### -Url +{{ Fill Url Description }} + +```yaml +Type: Object +Parameter Sets: (All) +Aliases: + +Required: False +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### System.Object +## NOTES + +## RELATED LINKS diff --git a/Docs/Set-DuoAccountTelephonyCredits.md b/Docs/Set-DuoAccountTelephonyCredits.md new file mode 100644 index 0000000..1467eec --- /dev/null +++ b/Docs/Set-DuoAccountTelephonyCredits.md @@ -0,0 +1,108 @@ +--- +external help file: DuoSecurity-help.xml +Module Name: DuoSecurity +online version: https://duo.com/docs/accountsapi#set-telephony-credits +schema: 2.0.0 +--- + +# Set-DuoAccountTelephonyCredits + +## SYNOPSIS +Set Telephony Credits + +## SYNTAX + +``` +Set-DuoAccountTelephonyCredits [-AccountId] [-Credits] [-WhatIf] [-Confirm] + [] +``` + +## DESCRIPTION +Sets the telephony credits for a child account. + +## EXAMPLES + +### EXAMPLE 1 +``` +Set-DuoAccountTelephonyCredits -AccountId SOMEACCOUNTID -Credits +``` + +## PARAMETERS + +### -AccountId +The child customer account ID as returned by Retrieve Accounts. +This is a 20 character string, for example DA9VZOC5X63I2W72NRP9. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: account_id + +Required: True +Position: 1 +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -Credits +{{ Fill Credits Description }} + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: 0 +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +## NOTES +Any additional credits added to the child account are transferred from the parent account. +For example, if the child account has 100 credits and it is then set to 300 credits, then 200 credits are deducted from the parent's balance and added to the child's balance. + +## RELATED LINKS + +[https://duo.com/docs/accountsapi#set-telephony-credits](https://duo.com/docs/accountsapi#set-telephony-credits) + diff --git a/DuoSecurity/Private/ArgumentCompleters/DuoAuthProxyLogCompleter.ps1 b/DuoSecurity/Private/ArgumentCompleters/DuoAuthProxyLogCompleter.ps1 new file mode 100644 index 0000000..38f8d29 --- /dev/null +++ b/DuoSecurity/Private/ArgumentCompleters/DuoAuthProxyLogCompleter.ps1 @@ -0,0 +1,12 @@ +$DuoAuthProxyLogCompleter = { + param ( + $CommandName, + $ParamName, + $LogName, + $CommandAst, + $fakeBoundParameters + ) + Get-DuoAuthProxyLogs -ListLogs | Where-Object { $_ -match "$LogName" } +} + +Register-ArgumentCompleter -CommandName Get-DuoAuthProxyLogs -ParameterName LogName -ScriptBlock $DuoAuthProxyLogCompleter diff --git a/DuoSecurity/Private/Test/Test-PngFile.ps1 b/DuoSecurity/Private/Test/Test-PngFile.ps1 index 25672f6..4b3c481 100644 --- a/DuoSecurity/Private/Test/Test-PngFile.ps1 +++ b/DuoSecurity/Private/Test/Test-PngFile.ps1 @@ -4,11 +4,11 @@ function Test-PngFile { [Parameter()] [string]$Path ) - $PngHeaders = @( "89", "50", "4E", "47", "0D", "0A", "1A", "0A" ); + $PngHeaders = @( '89', '50', '4E', '47', '0D', '0A', '1A', '0A' ); $Bytes = Get-Content -LiteralPath $Path -AsByteStream -ReadCount 1 -TotalCount 8 -ErrorAction Ignore - $FileHeader = $Bytes | Select-Object -First $PngHeaders.Length | ForEach-Object { $_.ToString("X2") } + $FileHeader = $Bytes | Select-Object -First $PngHeaders.Length | ForEach-Object { $_.ToString('X2') } $Diff = Compare-Object -ReferenceObject $PngHeaders -DifferenceObject $FileHeader diff --git a/DuoSecurity/Public/Accounts API/Get-DuoAccountEdition.ps1 b/DuoSecurity/Public/Accounts API/Get-DuoAccountEdition.ps1 index af59f4b..ae36278 100644 --- a/DuoSecurity/Public/Accounts API/Get-DuoAccountEdition.ps1 +++ b/DuoSecurity/Public/Accounts API/Get-DuoAccountEdition.ps1 @@ -37,7 +37,7 @@ function Get-DuoAccountEdition { Path = '/admin/v1/billing/edition' } - if ($PSCmdlet.ShouldProcess()) { + if ($PSCmdlet.ShouldProcess($AccountId)) { $Response = Invoke-DuoRequest @DuoRequest if ($Response.stat -eq 'OK') { $Response.response diff --git a/DuoSecurity/Public/Accounts API/Get-DuoAccounts.ps1 b/DuoSecurity/Public/Accounts API/Get-DuoAccounts.ps1 index 928c4e5..a58f9f3 100644 --- a/DuoSecurity/Public/Accounts API/Get-DuoAccounts.ps1 +++ b/DuoSecurity/Public/Accounts API/Get-DuoAccounts.ps1 @@ -20,7 +20,9 @@ function Get-DuoAccounts { #> [CmdletBinding()] - Param() + Param( + [switch]$IncludeEdition + ) $DuoRequest = @{ Method = 'POST' @@ -28,8 +30,16 @@ function Get-DuoAccounts { } $Response = Invoke-DuoRequest @DuoRequest if ($Response.stat -eq 'OK') { - $script:DuoAccountsList = $Response.response - $Response.response + + if ($IncludeEdition.IsPresent) { + $Accounts = $Response.response | Select-Object *, @{n = 'account_id_num'; e = { $_ | Get-DuoAccountID } }, @{ n = 'edition'; e = { ($_ | Get-DuoAccountEdition).edition } } + } + + else { + $Accounts = $Response.response | Select-Object *, @{n = 'account_id_num'; e = { $_ | Get-DuoAccountID } } + } + $script:DuoAccountsList = $Accounts + $Accounts } else { $Response diff --git a/DuoSecurity/Public/Accounts API/Set-DuoAccountEdition.ps1 b/DuoSecurity/Public/Accounts API/Set-DuoAccountEdition.ps1 index 673d7dc..a9a86eb 100644 --- a/DuoSecurity/Public/Accounts API/Set-DuoAccountEdition.ps1 +++ b/DuoSecurity/Public/Accounts API/Set-DuoAccountEdition.ps1 @@ -37,9 +37,9 @@ function Set-DuoAccountEdition { Select-DuoAccount -AccountId $AccountId -Quiet $DuoRequest = @{ - Method = 'GET' - Path = '/admin/v1/billing/edition' - Parameters = @{ edition = $Edition } + Method = 'GET' + Path = '/admin/v1/billing/edition' + Params = @{ edition = $Edition } } if ($PSCmdlet.ShouldProcess($AccountId)) { diff --git a/DuoSecurity/Public/Accounts API/Set-DuoAccountTelephonyCredits.ps1 b/DuoSecurity/Public/Accounts API/Set-DuoAccountTelephonyCredits.ps1 index f84997e..223c943 100644 --- a/DuoSecurity/Public/Accounts API/Set-DuoAccountTelephonyCredits.ps1 +++ b/DuoSecurity/Public/Accounts API/Set-DuoAccountTelephonyCredits.ps1 @@ -1,4 +1,4 @@ -function Get-DuoAccountEdition { +function Set-DuoAccountTelephonyCredits { <# .SYNOPSIS Set Telephony Credits diff --git a/DuoSecurity/Public/Apps/Authentication Proxy/Get-DuoAuthProxyLogs.ps1 b/DuoSecurity/Public/Apps/Authentication Proxy/Get-DuoAuthProxyLogs.ps1 index e69de29..5ef5907 100644 --- a/DuoSecurity/Public/Apps/Authentication Proxy/Get-DuoAuthProxyLogs.ps1 +++ b/DuoSecurity/Public/Apps/Authentication Proxy/Get-DuoAuthProxyLogs.ps1 @@ -0,0 +1,97 @@ +function Get-DuoAuthProxyLogs { + <# + .SYNOPSIS + This script reads Duo Auth Proxy log files + + .DESCRIPTION + Reads in log files from the designated log path and parses the entries from the standard log file format or json in the case of ssoevents + + .PARAMETER ListLogs + List available log files + + .PARAMETER LogName + Name of log to get + + .PARAMETER Search + Search object for string + + .EXAMPLE + Get-DuoAuthProxyLogs -LogName ssoevents -Search test + + #> + [CmdletBinding()] + Param( + [Parameter(ParameterSetName = 'List')] + [switch]$ListLogs, + + [Parameter(ParameterSetName = 'Logs')] + [string]$LogName, + + [Parameter(ParameterSetName = 'Logs')] + [string]$Search + ) + + if ($IsLinux) { + $ProxyBin = '/opt/duoauthproxy/bin/authproxyctl' + $DuoPath = '/opt/duoauthproxy' + } + + elseif ($IsWindows) { + $ProxyBin = 'C:\Program Files\Duo Security Authentication Proxy\bin\authproxyctl.exe' + $DuoPath = 'C:\Program Files\Duo Security Authentication Proxy' + } + + else { + throw 'Unsupported OS' + } + + if (-not (Test-Path $ProxyBin)) { + $DuoPath = 'C:\Program Files (x86)\Duo Security Authentication Proxy' + if (Test-Path $DuoPath) { + Write-Warning 'You are not running a v5.1.0 or higher version of Duo Security Authentication Proxy, please update at your earliest convenience' + } + + else { + throw 'Duo Security Authentication Proxy not detected' + } + } + + $LogPath = Join-Path $DuoPath 'log' + + if ($ListLogs.IsPresent) { + Get-ChildItem -Path $LogPath/*.log | Select-Object -ExpandProperty BaseName + } + + else { + $Logs = Get-Content -Path $LogPath/$LogName.log + + switch ($LogName) { + 'ssoevents' { + $ParsedLogs = foreach ($Log in $Logs) { + $Log | ConvertFrom-Json + } + } + 'install' { + Get-Content -Path $LogPath/$LogName.log -Encoding Unicode + } + default { + $ParsedLogs = foreach ($Log in $Logs) { + if ($Log -match '^(?.+?)\s\[(?.+?)\]\s(?.+)$') { + [PSCustomObject]@{ + Date = Get-Date $Matches.Date + Type = $Matches.Type + Message = $Matches.Message + } + } + } + } + } + if ($Search) { + $ParsedLogs -match $Search + } + + else { + $ParsedLogs + } + } +} diff --git a/DuoSecurity/Public/Apps/Install & Upgrade/Get-DuoInstallFileInfo.ps1 b/DuoSecurity/Public/Apps/Install & Upgrade/Get-DuoInstallFileInfo.ps1 new file mode 100644 index 0000000..55a5480 --- /dev/null +++ b/DuoSecurity/Public/Apps/Install & Upgrade/Get-DuoInstallFileInfo.ps1 @@ -0,0 +1,29 @@ +function Get-DuoInstallFileInfo { + [CmdletBinding()] + Param( + $Url + ) + + $Head = Invoke-WebRequest $Url -Method Head + $ContentDisposition = @{} + + $Head.headers.'Content-Disposition' -split '\s*;\s*' | ForEach-Object { $Key, $Value = $_ -split '='; $ContentDisposition.$Key = $Value -replace '"' } + $Filename = $ContentDisposition.filename + + (Invoke-WebRequest 'https://duo.com/docs/checksums').content -split "`n" | Where-Object { $_ -match "(:?.+)`">)?(?[a-z0-9]+)\s+?$Filename" } + if ($Matches) { + $Checksum = $Matches.Checksum + $Url = $Matches.Url + } + + else {b + $Checksum = $false + $Url = $false + } + + [PSCustomObject]@{ + Name = $Filename + Checksum = $Checksum + Url = $Url + } +} diff --git a/DuoSecurity/Public/Auth API/Send-DuoAuth.ps1 b/DuoSecurity/Public/Auth API/Send-DuoAuth.ps1 index 97f72bd..d68f0a8 100644 --- a/DuoSecurity/Public/Auth API/Send-DuoAuth.ps1 +++ b/DuoSecurity/Public/Auth API/Send-DuoAuth.ps1 @@ -97,7 +97,7 @@ function Send-DuoAuth { ) process { - $Params = @{ + $Params = [ordered]@{ factor = $Factor.ToLower() } if ($UserId) { $Params.user_id = $UserId } @@ -108,6 +108,7 @@ function Send-DuoAuth { if ($Factor -eq 'Passcode') { if ($Passcode) { $Params.passcode = $Passcode } } + else { if ($Device) { $Params.device = $Device } @@ -127,6 +128,7 @@ function Send-DuoAuth { if ($Response.stat -eq 'OK') { $Response.response } + else { $Response } diff --git a/DuoSecurity/Public/Misc/Get-DuoAccountID.ps1 b/DuoSecurity/Public/Misc/Get-DuoAccountID.ps1 new file mode 100644 index 0000000..b8d7032 --- /dev/null +++ b/DuoSecurity/Public/Misc/Get-DuoAccountID.ps1 @@ -0,0 +1,42 @@ +function Get-DuoAccountID { + <# + .SYNOPSIS + Get Account ID # from Duo API hostname + + .DESCRIPTION + Converts hexidecimal hostname to decimal format + + .PARAMETER ApiHost + API hostname to get Account ID # for + + .EXAMPLE + Get-DuoAccountID -ApiHost api-01ab23cd.duosecurity.com + + #> + [CmdletBinding()] + Param( + [Parameter(ValueFromPipelineByPropertyName = $true)] + [Alias('api_hostname')] + [string]$ApiHost + ) + $AccountHex = '' + + if (!$ApiHost) { + if ($script:DuoApiHost) { $ApiHost = $script:DuoApiHost } + elseif ($script:DuoAccountsApiHost) { $ApiHost = $script:DuoAccountsApiHost } + } + + if (!$ApiHost) { + $ApiHost = Read-Host 'Please enter an API hostname (e.g. api-01ab23cd.duosecurity.com)' + } + + if ($ApiHost -match 'api-(?.+)\.duosecurity\.com') { + $AccountHex = '0x{0}' -f $Matches.AccountHex + $AccountHexUnsigned = [uint]$AccountHex + ($AccountHexUnsigned.ToString().PadLeft(10, '0') -split '([0-9]{4})' -ne '') -join '-' + } + + else { + Write-Output 'Unable to determine account ID' + } +} diff --git a/README.md b/README.md index 0b5a4c4..c1eea89 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,8 @@ Get-DuoUsers ``` + + # Cmdlet Help ## Accounts API - [Get-DuoAccountEdition](./Docs/Get-DuoAccountEdition.md) @@ -183,6 +185,12 @@ Get-DuoUsers - WebAuthn - [Get-DuoWebAuthnCredentials](./Docs/Get-DuoWebAuthnCredentials.md) - [Remove-DuoWebAuthnCredential](./Docs/Remove-DuoWebAuthnCredential.md) +## Apps +- Authentication Proxy + - [Get-DuoAuthProxyLogs](./Docs/Get-DuoAuthProxyLogs.md) +- Install & Upgrade + - [Get-DuoInstallFileInfo](./Docs/Get-DuoInstallFileInfo.md) + - [Install-DuoAuthProxy](./Docs/Install-DuoAuthProxy.md) ## Auth API - [Get-DuoAuthEnrollmentStatus](./Docs/Get-DuoAuthEnrollmentStatus.md) - [Get-DuoAuthLogo](./Docs/Get-DuoAuthLogo.md) @@ -195,4 +203,5 @@ Get-DuoUsers ## Authentication - [Set-DuoApiAuth](./Docs/Set-DuoApiAuth.md) ## Misc +- [Get-DuoAccountID](./Docs/Get-DuoAccountID.md) - [New-DuoTokenTotpSecret](./Docs/New-DuoTokenTotpSecret.md)