Skip to content

Latest commit

 

History

History
1652 lines (1253 loc) · 42.4 KB

File metadata and controls

1652 lines (1253 loc) · 42.4 KB

Example Output

Real output captured from every exported function against a live Pi-hole v6 server, generated by tools/Update-ExampleOutput.ps1. Values (query counts, IDs, timestamps, etc.) reflect whatever that specific server had at capture time - the shape of the output is what matters here, not the exact numbers.

Regenerate with:

./tools/Update-ExampleOutput.ps1
# or, to also capture the small number of functions with real side effects on a live server:
./tools/Update-ExampleOutput.ps1 -IncludeDisruptive

Actions

Invoke-PiHoleFlushNetwork

Invoke-PiHoleFlushNetwork -PiHoleServer $PiHoleServer -Password $Password
Status : Flushed

_(A real example captured previously - not re-run by default since this function has a real side effect on a live server. Pass -IncludeDisruptive to capture a fresh one.)_

Invoke-PiHoleFlushLogs

Invoke-PiHoleFlushLogs -PiHoleServer $PiHoleServer -Password $Password
Status : Flushed

_(A real example captured previously - not re-run by default since this function has a real side effect on a live server. Pass -IncludeDisruptive to capture a fresh one.)_

Restart-PiHoleDnsService

Restart-PiHoleDnsService -PiHoleServer $PiHoleServer -Password $Password
Status : Restarted

_(A real example captured previously - not re-run by default since this function has a real side effect on a live server. Pass -IncludeDisruptive to capture a fresh one.)_

Update-PiHoleActionsGravity

Rebuilds the entire gravity database - typically takes 1-2 minutes.

Update-PiHoleActionsGravity -PiHoleServer $PiHoleServer -Password $Password
Status : Completed

_(A real example captured previously - not re-run by default since this function has a real side effect on a live server. Pass -IncludeDisruptive to capture a fresh one.)_

DNS Control

Get-PiHoleDnsBlockingStatus

Get-PiHoleDnsBlockingStatus -PiHoleServer $PiHoleServer -Password $Password

Blocking : enabled
Timer    : 0

Set-PiHoleDnsBlocking

Set-PiHoleDnsBlocking -PiHoleServer $PiHoleServer -Password $Password -Blocking False -TimeInSeconds 60
_Not captured this run - re-run with -IncludeDisruptive to include a live example._

Group Management

New-PiHoleGroup

New-PiHoleGroup -PiHoleServer $PiHoleServer -Password $Password -GroupName "PiHoleShellDocsExampleGroup" -Comment "Example group"

Name         : PiHoleShellDocsExampleGroup
Comment      : Example group
Enabled      : True
Id           : 57
DateAdded    : 10/1/2026 3:13:46 PM
DateModified : 10/1/2026 3:13:46 PM

Get-PiHoleGroup

Get-PiHoleGroup -PiHoleServer $PiHoleServer -Password $Password

Name         : Default
Comment      : The default group
Enabled      : True
Id           : 0
DateAdded    : 6/25/2025 12:32:45 AM
DateModified : 6/25/2025 12:32:45 AM

Name         : testgroup2
Comment      : 
Enabled      : True
Id           : 2
DateAdded    : 7/1/2025 10:13:36 PM
DateModified : 7/1/2025 10:13:36 PM

Name         : testgroup1
Comment      : 
Enabled      : True
Id           : 3
DateAdded    : 7/1/2025 10:13:40 PM
DateModified : 7/1/2025 10:13:40 PM

Name         : RealFunctionTest
Comment      : 
Enabled      : True
Id           : 44
DateAdded    : 9/30/2026 8:48:26 AM
DateModified : 9/30/2026 8:48:26 AM

Name         : PiHoleShellDocsExampleGroup
Comment      : Example group
Enabled      : True
Id           : 57
DateAdded    : 10/1/2026 3:13:46 PM
DateModified : 10/1/2026 3:13:46 PM

Update-PiHoleGroup

Update-PiHoleGroup -PiHoleServer $PiHoleServer -Password $Password -GroupName "PiHoleShellDocsExampleGroup" -Enabled $false

Name         : PiHoleShellDocsExampleGroup
Comment      : Example group
Enabled      : False
Id           : 57
DateAdded    : 10/1/2026 3:13:46 PM
DateModified : 10/1/2026 3:14:04 PM

Remove-PiHoleGroup

Remove-PiHoleGroup -PiHoleServer $PiHoleServer -Password $Password -GroupName "PiHoleShellDocsExampleGroup"

Name   : PiHoleShellDocsExampleGroup
Status : Deleted

List Management

Add-PiHoleList

Add-PiHoleList -PiHoleServer $PiHoleServer -Password $Password -Address "https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt" -Type Block -Comment "Example list"

Address        : https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt
Comment        : Example list
Groups         : {Default}
Enabled        : True
Id             : 71
DateAdded      : 10/1/2026 3:14:41 PM
DateModified   : 10/1/2026 3:14:41 PM
Type           : Block
DateUpdated    : 
Number         : 0
InvalidDomains : 0
AbpEntries     : 0
Status         : 0

Get-PiHoleList

Get-PiHoleList -PiHoleServer $PiHoleServer -Password $Password

Address        : https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
Comment        : 
Groups         : {Default}
Enabled        : True
Id             : 51
DateAdded      : 7/6/2025 2:20:13 AM
DateModified   : 7/6/2025 2:20:13 AM
Type           : block
DateUpdated    : 7/6/2025 2:20:13 AM
Number         : 74761
InvalidDomains : 1
AbpEntries     : 0
Status         : 2

Address        : https://adaway.org/hosts.txt
Comment        : 
Groups         : {Default}
Enabled        : True
Id             : 52
DateAdded      : 7/6/2025 2:20:40 AM
DateModified   : 7/6/2025 2:20:40 AM
Type           : block
DateUpdated    : 7/6/2025 2:20:40 AM
Number         : 6540
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

Address        : https://v.firebog.net/hosts/AdguardDNS.txt
Comment        : 
Groups         : {Default}
Enabled        : True
Id             : 53
DateAdded      : 7/6/2025 2:20:46 AM
DateModified   : 7/6/2025 2:20:46 AM
Type           : block
DateUpdated    : 7/6/2025 2:20:46 AM
Number         : 175912
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

Address        : https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
Comment        : 
Groups         : {Default}
Enabled        : True
Id             : 54
DateAdded      : 7/6/2025 2:20:59 AM
DateModified   : 7/6/2025 2:20:59 AM
Type           : block
DateUpdated    : 7/6/2025 2:20:59 AM
Number         : 42531
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

Address        : https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
Comment        : 
Groups         : {Default}
Enabled        : True
Id             : 55
DateAdded      : 7/6/2025 2:21:09 AM
DateModified   : 7/6/2025 2:21:09 AM
Type           : block
DateUpdated    : 7/6/2025 2:21:09 AM
Number         : 2700
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

_(showing 5 of 15 results)_

Update-PiHoleList

Update-PiHoleList -PiHoleServer $PiHoleServer -Password $Password -Address "https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt" -Type Block -Enabled $false

Address        : https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt
Comment        : Example list
Groups         : {Default}
Enabled        : False
Id             : 71
DateAdded      : 10/1/2026 3:14:41 PM
DateModified   : 10/1/2026 3:15:14 PM
Type           : Block
DateUpdated    : 
Number         : 0
InvalidDomains : 0
AbpEntries     : 0
Status         : 0

Search-PiHoleListDomain

Search-PiHoleListDomain -PiHoleServer $PiHoleServer -Password $Password -Domain "doubleclick.net"

Domain         : doubleclick.net
Address        : https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
Comment        : 
Enabled        : True
Id             : 51
Type           : block
Groups         : {0}
DateAdded      : 7/6/2025 2:20:13 AM
DateModified   : 7/6/2025 2:20:13 AM
DateUpdated    : 9/26/2026 11:28:08 PM
Number         : 74761
InvalidDomains : 1
AbpEntries     : 0
Status         : 2

Domain         : doubleclick.net
Address        : https://adaway.org/hosts.txt
Comment        : 
Enabled        : True
Id             : 52
Type           : block
Groups         : {0}
DateAdded      : 7/6/2025 2:20:40 AM
DateModified   : 7/6/2025 2:20:40 AM
DateUpdated    : 7/6/2025 2:25:21 AM
Number         : 6540
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

Domain         : doubleclick.net
Address        : https://v.firebog.net/hosts/AdguardDNS.txt
Comment        : 
Enabled        : True
Id             : 53
Type           : block
Groups         : {0}
DateAdded      : 7/6/2025 2:20:46 AM
DateModified   : 7/6/2025 2:20:46 AM
DateUpdated    : 9/30/2026 10:20:00 AM
Number         : 175912
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

Domain         : doubleclick.net
Address        : https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
Comment        : 
Enabled        : True
Id             : 54
Type           : block
Groups         : {0}
DateAdded      : 7/6/2025 2:20:59 AM
DateModified   : 7/6/2025 2:20:59 AM
DateUpdated    : 12/27/2025 9:28:21 PM
Number         : 42531
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

Domain         : doubleclick.net
Address        : https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
Comment        : 
Enabled        : True
Id             : 55
Type           : block
Groups         : {0}
DateAdded      : 7/6/2025 2:21:09 AM
DateModified   : 7/6/2025 2:21:09 AM
DateUpdated    : 6/6/2026 11:13:26 PM
Number         : 2700
InvalidDomains : 0
AbpEntries     : 0
Status         : 2

_(showing 5 of 7 results)_

Remove-PiHoleList

Remove-PiHoleList -PiHoleServer $PiHoleServer -Password $Password -Address "https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt" -Type Block

Address : https://blocklistproject.github.io/Lists/alt-version/ransomware-nl.txt
Type    : Block
Status  : Removed

Domain Management

New-PiHoleDomain

New-PiHoleDomain -PiHoleServer $PiHoleServer -Password $Password -Domain "piholeshell-docs-example.com" -Type Allow -Kind Exact -Comment "Example domain"

Domain       : piholeshell-docs-example.com
Unicode      : piholeshell-docs-example.com
Type         : Allow
Kind         : Exact
Comment      : Example domain
Groups       : {Default}
Enabled      : True
Id           : 22
DateAdded    : 10/1/2026 3:15:52 PM
DateModified : 10/1/2026 3:15:52 PM

Get-PiHoleDomain

Get-PiHoleDomain -PiHoleServer $PiHoleServer -Password $Password

Domain       : piholeshell-docs-example.com
Unicode      : piholeshell-docs-example.com
Type         : allow
Kind         : exact
Comment      : Example domain
Groups       : {Default}
Enabled      : True
Id           : 22
DateAdded    : 10/1/2026 3:15:52 PM
DateModified : 10/1/2026 3:15:52 PM

Update-PiHoleDomain

Update-PiHoleDomain -PiHoleServer $PiHoleServer -Password $Password -Domain "piholeshell-docs-example.com" -Type Allow -Kind Exact -Enabled $false

Domain       : piholeshell-docs-example.com
Unicode      : piholeshell-docs-example.com
Type         : Allow
Kind         : Exact
Comment      : Example domain
Groups       : {Default}
Enabled      : False
Id           : 22
DateAdded    : 10/1/2026 3:15:52 PM
DateModified : 10/1/2026 3:16:25 PM

Remove-PiHoleDomain

Remove-PiHoleDomain -PiHoleServer $PiHoleServer -Password $Password -Domain "piholeshell-docs-example.com" -Type Allow -Kind Exact

Domain : piholeshell-docs-example.com
Type   : Allow
Kind   : Exact
Status : Removed

Client Management

New-PiHoleClient

New-PiHoleClient -PiHoleServer $PiHoleServer -Password $Password -Client "192.168.99.99" -Comment "Example client"

Client       : 192.168.99.99
Name         : 
Comment      : Example client
Groups       : {Default}
Id           : 22
DateAdded    : 10/1/2026 3:16:56 PM
DateModified : 10/1/2026 3:16:56 PM

Get-PiHoleClient

Get-PiHoleClient -PiHoleServer $PiHoleServer -Password $Password

Client       : 192.168.99.99
Name         : 
Comment      : Example client
Groups       : {Default}
Id           : 22
DateAdded    : 10/1/2026 3:16:56 PM
DateModified : 10/1/2026 3:16:56 PM

Get-PiHoleClientSuggestion

Get-PiHoleClientSuggestion -PiHoleServer $PiHoleServer -Password $Password

HwAddr    : ip-127.0.0.1
MacVendor : 
LastQuery : 10/1/2026 3:00:00 PM
Addresses : 127.0.0.1
Names     : localhost

HwAddr    : 74:56:3c:bb:f4:0b
MacVendor : Giga-Byte Technology Co.,Ltd.
LastQuery : 10/1/2026 9:03:33 AM
Addresses : 192.168.1.162
Names     :

Update-PiHoleClient

Update-PiHoleClient -PiHoleServer $PiHoleServer -Password $Password -Client "192.168.99.99" -Comment "Updated comment"

Client       : 192.168.99.99
Name         : 
Comment      : Updated comment
Groups       : {Default}
Id           : 22
DateAdded    : 10/1/2026 3:16:56 PM
DateModified : 10/1/2026 3:17:35 PM

Remove-PiHoleClient

Remove-PiHoleClient -PiHoleServer $PiHoleServer -Password $Password -Client "192.168.99.99"

Client : 192.168.99.99
Status : Removed

Metrics

Get-PiHoleStatsSummary

Get-PiHoleStatsSummary -PiHoleServer $PiHoleServer -Password $Password

Total          : 52
Blocked        : 10
PercentBlocked : 19.230770111084
UniqueDomains  : 15
Forwarded      : 27
Cached         : 15
Frequency      : 0
Types          : @{A=20; AAAA=19; ANY=0; SRV=0; SOA=0; PTR=13; TXT=0; NAPTR=0; MX=0; DS=0; RRSIG=0; DNSKEY=0; NS=0; SVCB=0; HTTPS=0; OTHER=0}
Status         : @{Unknown=0; Gravity=10; Forwarded=27; Cache=15; Regex=0; DenyList=0; ExternalBlockedIp=0; ExternalBlockedNull=0; ExternalBlockedNxra=0; GravityCname=0; RegexCname=0; DenyListCname=0; Retired=0; RetiredDnssec=0; InProgress=0; Dbbusy=0; SpecialDomain=0; CacheStale=0; ExternalBlockedEde15=0}
Replies        : @{Unknown=10; Nodata=3; Nxdomain=3; Cname=0; Ip=26; Domain=10; Rrname=0; ServFail=0; Refused=0; Notimp=0; Other=0; Dnssec=0; None=0; Blob=0}
Clients        : @{Active=2; Total=2}
Gravity        : @{DomainsBeingBlocked=495564; LastUpdate=1790861541}

Get-PiHoleStatsRecentBlocked

Get-PiHoleStatsRecentBlocked -PiHoleServer $PiHoleServer -Password $Password

Blocked : googleadservices.com

Get-PiHoleStatsQueryType

Get-PiHoleStatsQueryType -PiHoleServer $PiHoleServer -Password $Password

Type  : A
Count : 20

Type  : AAAA
Count : 19

Type  : ANY
Count : 0

Type  : SRV
Count : 0

Type  : SOA
Count : 0

_(showing 5 of 16 results)_

Get-PiHoleStatsTopDomain

Get-PiHoleStatsTopDomain -PiHoleServer $PiHoleServer -Password $Password

Domain : 1.0.0.127.in-addr.arpa
Count  : 7

Domain : example.com
Count  : 4

Domain : cloudflare.com
Count  : 4

Domain : reddit.com
Count  : 4

Domain : bbc.com
Count  : 4

_(showing 5 of 10 results)_

Get-PiHoleStatsTopClient

Get-PiHoleStatsTopClient -PiHoleServer $PiHoleServer -Password $Password

IP    : 192.168.1.162
Name  : 
Count : 39

IP    : 127.0.0.1
Name  : localhost
Count : 13

Get-PiHoleStatsUpstream

Get-PiHoleStatsUpstream -PiHoleServer $PiHoleServer -Password $Password

TotalQueries     : 52
ForwardedQueries : 27
Upstreams        : {@{Ip=blocklist; Name=blocklist; Port=-1; Count=10; ResponseTime=0; Variance=0}, @{Ip=cache; Name=cache; Port=-1; Count=15; ResponseTime=0; Variance=0}, @{Ip=8.8.8.8; Name=dns.google; Port=53; Count=27; ResponseTime=0.0202921777963638; Variance=0.00264818341859654}}

Get-PiHoleStatsQuerySuggestions

Get-PiHoleStatsQuerySuggestions -PiHoleServer $PiHoleServer -Password $Password

Domain     : {1.0.0.127.in-addr.arpa, example.com, cloudflare.com, reddit.com…}
ClientIp   : {192.168.1.162, 127.0.0.1}
ClientName : {localhost}
Upstream   : {blocklist, cache, 8.8.8.8#53 (dns.google), permitted}
Type       : {A, AAAA, ANY, SRV…}
Status     : {UNKNOWN, GRAVITY, FORWARDED, CACHE…}
Reply      : {UNKNOWN, NODATA, NXDOMAIN, CNAME…}
Dnssec     : {UNKNOWN, SECURE, INSECURE, BOGUS…}

Get-PiHoleStatsDatabaseSummary

Defaults to the last 8 hours; pass -From/-Until for a different window.

Get-PiHoleStatsDatabaseSummary -PiHoleServer $PiHoleServer -Password $Password

SumQueries     : 52
SumBlocked     : 10
PercentBlocked : 19.230770111084
TotalClients   : 3

Get-PiHoleStatsDatabaseQueryType

Defaults to the last 8 hours; pass -From/-Until for a different window.

Get-PiHoleStatsDatabaseQueryType -PiHoleServer $PiHoleServer -Password $Password

Type  : A
Count : 19

Type  : AAAA
Count : 0

Type  : ANY
Count : 0

Type  : SRV
Count : 0

Type  : SOA
Count : 13

_(showing 5 of 16 results)_

Get-PiHoleStatsDatabaseTopDomain

Defaults to the last 8 hours; pass -From/-Until for a different window.

Get-PiHoleStatsDatabaseTopDomain -PiHoleServer $PiHoleServer -Password $Password

Domain : 1.0.0.127.in-addr.arpa
Count  : 7

Domain : bbc.com
Count  : 4

Domain : wikipedia.org
Count  : 4

Domain : example.com
Count  : 4

Domain : stackoverflow.com
Count  : 4

_(showing 5 of 10 results)_

Get-PiHoleStatsDatabaseTopClient

Defaults to the last 8 hours; pass -From/-Until for a different window.

Get-PiHoleStatsDatabaseTopClient -PiHoleServer $PiHoleServer -Password $Password

IP    : 192.168.1.162
Name  : 
Count : 29

IP    : 127.0.0.1
Name  : localhost
Count : 11

IP    : 127.0.0.1
Name  : 
Count : 2

Get-PiHoleStatsDatabaseUpstream

Defaults to the last 8 hours; pass -From/-Until for a different window.

Get-PiHoleStatsDatabaseUpstream -PiHoleServer $PiHoleServer -Password $Password

TotalQueries     : 52
ForwardedQueries : 27
Upstreams        : {@{Ip=2; Name=; Port=4294967295; Count=27; ResponseTime=0; Variance=0}, @{Ip=cache; Name=cache; Port=-1; Count=15; ResponseTime=0; Variance=0}, @{Ip=blocklist; Name=blocklist; Port=-1; Count=10; ResponseTime=0; Variance=0}}

Get-PiHoleQuery

Returns the most recent 100 queries by default; supports many optional filters (domain, client, type, status...) - see Get-PiHoleStatsQuerySuggestions for valid filter values.

Get-PiHoleQuery -PiHoleServer $PiHoleServer -Password $Password -Length 5

Id       : 51
Time     : 10/1/2026 3:00:00 PM
Type     : PTR
Domain   : 1.0.0.127.in-addr.arpa
Cname    : 
Status   : CACHE
Client   : @{Ip=127.0.0.1; Name=localhost}
Dnssec   : UNKNOWN
Reply    : @{Type=DOMAIN; Time=0.000154972076416016}
ListId   : 
Upstream : 
Ede      : @{Code=-1; Text=}

Id       : 50
Time     : 10/1/2026 2:00:01 PM
Type     : PTR
Domain   : 1.0.0.127.in-addr.arpa
Cname    : 
Status   : CACHE
Client   : @{Ip=127.0.0.1; Name=localhost}
Dnssec   : UNKNOWN
Reply    : @{Type=DOMAIN; Time=0.000155925750732422}
ListId   : 
Upstream : 
Ede      : @{Code=-1; Text=}

Id       : 49
Time     : 10/1/2026 1:00:00 PM
Type     : PTR
Domain   : 1.0.0.127.in-addr.arpa
Cname    : 
Status   : CACHE
Client   : @{Ip=127.0.0.1; Name=localhost}
Dnssec   : UNKNOWN
Reply    : @{Type=DOMAIN; Time=0.000154018402099609}
ListId   : 
Upstream : 
Ede      : @{Code=-1; Text=}

Id       : 48
Time     : 10/1/2026 12:00:00 PM
Type     : PTR
Domain   : 1.0.0.127.in-addr.arpa
Cname    : 
Status   : CACHE
Client   : @{Ip=127.0.0.1; Name=localhost}
Dnssec   : UNKNOWN
Reply    : @{Type=DOMAIN; Time=0.000212192535400391}
ListId   : 
Upstream : 
Ede      : @{Code=-1; Text=}

Id       : 47
Time     : 10/1/2026 11:00:01 AM
Type     : PTR
Domain   : 8.8.8.8.in-addr.arpa
Cname    : 
Status   : CACHE
Client   : @{Ip=127.0.0.1; Name=localhost}
Dnssec   : UNKNOWN
Reply    : @{Type=DOMAIN; Time=0.00014805793762207}
ListId   : 
Upstream : 
Ede      : @{Code=-1; Text=}

Configuration & Diagnostics

Get-PiHoleConfig

Get-PiHoleConfig -PiHoleServer $PiHoleServer -Password $Password

Dns       : @{Upstreams=System.Object[]; CNAMEdeepInspect=True; BlockESNI=True; EDNS0ECS=True; IgnoreLocalhost=False; ShowDNSSEC=True; AnalyzeOnlyAandAAAA=False; PiholePTR=PI.HOLE; ReplyWhenBusy=ALLOW; BlockTTL=2; Hosts=System.Object[]; DomainNeeded=False; ExpandHosts=False; BogusPriv=True; Dnssec=False; Interface=wlan0; HostRecord=; ListeningMode=LOCAL; QueryLogging=False; CnameRecords=; Port=53; Localise=True; RevServers=; Domain=; Cache=; Blocking=; SpecialDomains=; Reply=; RateLimit=}
Dhcp      : @{Active=False; Start=; End=; Router=; Netmask=; LeaseTime=; Ipv6=False; RapidCommit=False; MultiDNS=False; Logging=False; IgnoreUnknownClients=False; Hosts=}
Ntp       : @{Ipv4=; Ipv6=; Sync=}
Resolver  : @{ResolveIPv4=True; ResolveIPv6=True; MacNames=True; NetworkNames=True; RefreshNames=IPV4_ONLY}
Database  : @{DBimport=True; MaxDBdays=2; DBinterval=60; UseWAL=True; ForceDisk=False; Network=}
Webserver : @{Domain=pi.hole; Acl=; Port=8089,8489s; Threads=50; Headers=System.Object[]; ServeAll=False; AdvancedOpts=; Session=; Tls=; Paths=; Interface=; Api=}
Files     : @{Database=/etc/pihole/pihole-FTL.db; TmpDb=/etc/pihole/pihole-tmp.db; Gravity=/etc/pihole/gravity.db; GravityTmp=/tmp; Macvendor=/etc/pihole/macvendor.db; Pcap=; Log=}
Misc      : @{Privacylevel=0; DelayStartup=0; Nice=-10; Addr2line=True; EtcDnsmasqD=False; DnsmasqLines=; ExtraLogging=False; ReadOnly=False; NormalizeCPU=True; HideDnsmasqWarn=False; HideConnectionError=False; Check=}
Debug     : @{Database=False; Networking=False; Locks=False; Queries=False; Flags=False; Shmem=False; Gc=False; Arp=False; Regex=False; Api=False; Tls=False; Overtime=False; Status=False; Caps=False; Dnssec=False; Vectors=False; Resolver=False; Edns0=False; Clients=False; Aliasclients=False; Events=False; Helper=False; Config=False; Inotify=False; Webserver=False; Extra=False; Reserved=False; Ntp=False; Netlink=False; Timing=False; Performance=False; All=False}

Get-PiHoleConfigProperty

Get-PiHoleConfigProperty -PiHoleServer $PiHoleServer -Password $Password

Key         : misc.readOnly
Reason      : read_only
Description : Variable can only be set in pihole.toml, not via API

Set-PiHoleConfig

Set-PiHoleConfig -PiHoleServer $PiHoleServer -Password $Password -Settings @{ debug = @{ api = $true } }

Dns       : @{Upstreams=System.Object[]; CNAMEdeepInspect=True; BlockESNI=True; EDNS0ECS=True; IgnoreLocalhost=False; ShowDNSSEC=True; AnalyzeOnlyAandAAAA=False; PiholePTR=PI.HOLE; ReplyWhenBusy=ALLOW; BlockTTL=2; Hosts=System.Object[]; DomainNeeded=False; ExpandHosts=False; BogusPriv=True; Dnssec=False; Interface=wlan0; HostRecord=; ListeningMode=LOCAL; QueryLogging=False; CnameRecords=; Port=53; Localise=True; RevServers=; Domain=; Cache=; Blocking=; SpecialDomains=; Reply=; RateLimit=}
Dhcp      : @{Active=False; Start=; End=; Router=; Netmask=; LeaseTime=; Ipv6=False; RapidCommit=False; MultiDNS=False; Logging=False; IgnoreUnknownClients=False; Hosts=}
Ntp       : @{Ipv4=; Ipv6=; Sync=}
Resolver  : @{ResolveIPv4=True; ResolveIPv6=True; MacNames=True; NetworkNames=True; RefreshNames=IPV4_ONLY}
Database  : @{DBimport=True; MaxDBdays=2; DBinterval=60; UseWAL=True; ForceDisk=False; Network=}
Webserver : @{Domain=pi.hole; Acl=; Port=8089,8489s; Threads=50; Headers=System.Object[]; ServeAll=False; AdvancedOpts=; Session=; Tls=; Paths=; Interface=; Api=}
Files     : @{Database=/etc/pihole/pihole-FTL.db; TmpDb=/etc/pihole/pihole-tmp.db; Gravity=/etc/pihole/gravity.db; GravityTmp=/tmp; Macvendor=/etc/pihole/macvendor.db; Pcap=; Log=}
Misc      : @{Privacylevel=0; DelayStartup=0; Nice=-10; Addr2line=True; EtcDnsmasqD=False; DnsmasqLines=; ExtraLogging=False; ReadOnly=False; NormalizeCPU=True; HideDnsmasqWarn=False; HideConnectionError=False; Check=}
Debug     : @{Database=False; Networking=False; Locks=False; Queries=False; Flags=False; Shmem=False; Gc=False; Arp=False; Regex=False; Api=True; Tls=False; Overtime=False; Status=False; Caps=False; Dnssec=False; Vectors=False; Resolver=False; Edns0=False; Clients=False; Aliasclients=False; Events=False; Helper=False; Config=False; Inotify=False; Webserver=False; Extra=False; Reserved=False; Ntp=False; Netlink=False; Timing=False; Performance=False; All=False}

Add-PiHoleConfigArrayItem

Add-PiHoleConfigArrayItem -PiHoleServer $PiHoleServer -Password $Password -Element "dns/hosts" -Value "192.0.2.1 piholeshell-docs-example.com"

Element : dns/hosts
Value   : 192.0.2.1 piholeshell-docs-example.com
Status  : Added

Remove-PiHoleConfigArrayItem

Remove-PiHoleConfigArrayItem -PiHoleServer $PiHoleServer -Password $Password -Element "dns/hosts" -Value "192.0.2.1 piholeshell-docs-example.com"

Element : dns/hosts
Value   : 192.0.2.1 piholeshell-docs-example.com
Status  : Removed

Get-PiHolePadd

Get-PiHolePadd -PiHoleServer $PiHoleServer -Password $Password

CpuPercent    : 0
MemoryPercent : 0
ActiveClients : 2
Blocking      : enabled
Cache         : @{Size=10000; Inserted=35; Evicted=0}
Config        : @{DhcpActive=False; DhcpStart=; DhcpEnd=; DhcpIpv6=False; DnsDnssec=False; DnsDomain=lan; DnsNumUpstreams=2; DnsPort=53; DnsrevServerAactive=False; PrivacyLevel=0}
GravitySize   : 495564
HostModel     : Raspberry Pi Zero W Rev 1.1
IFace         : @{v4=; v6=}
NodeName      : dns3.localdomain
Pid           : 388
Queries       : @{Total=52; Blocked=10; PercentBlocked=19.230770111084; QueryFrequency=0}
RecentBlocked : googleadservices.com
Sensors       : @{CpuTemp=39.546; HotLimit=60; Unit=C}
System        : @{Uptime=235882; Memory=; Procs=72; Cpu=; Ftl=}
TopBlocked    : googleadservices.com
TopClient     : 192.168.1.162
TopDomain     : 1.0.0.127.in-addr.arpa
Version       : @{Core=; Web=; Ftl=; Docker=}

Get-PiHoleInfoHost

Get-PiHoleInfoHost -PiHoleServer $PiHoleServer -Password $Password

DomainName     : (none)
Machine        : armv6l
NodeName       : dns3.localdomain
Release        : 6.12.109+rpt-rpi-v6
SysName        : Linux
Version        : #1 Raspbian 1:6.12.109-1+rpt1 (2026-09-11)
Model          : Raspberry Pi Zero W Rev 1.1
BiosVendor     : 
BoardName      : 
BoardVendor    : 
BoardVersion   : 
ProductName    : 
ProductFamily  : 
ProductVersion : 
SysVendor      :

Get-PiHoleInfoSystem

Get-PiHoleInfoSystem -PiHoleServer $PiHoleServer -Password $Password

Uptime : 235892
Memory : @{Ram=; Swap=}
Procs  : 74
Cpu    : @{NumProcessors=1; PercentCpu=97.1999969482422; Load=}
Ftl    : @{PercentMemory=2.52266621589661; PercentCpu=96.4000015258789}

Get-PiHoleInfoFtl

Get-PiHoleInfoFtl -PiHoleServer $PiHoleServer -Password $Password

Database         : @{Gravity=495564; Antigravity=0; Groups=4; Lists=14; Clients=0; Domains=; Regex=}
PrivacyLevel     : 0
QueryFrequency   : 0
Clients          : @{Total=2; Active=2}
Pid              : 388
Uptime           : 24254906.207769
PercentMemory    : 2.52266621589661
PercentCpu       : 96.4000015258789
AllowDestructive : True
Dnsmasq          : @{DnsCacheInserted=35; DnsCacheLiveFreed=0; DnsQueriesForwarded=27; DnsAuthAnswered=0; DnsLocalAnswered=25; DnsStaleAnswered=0; DnsUnanswered=0; DnssecMaxCryptoUse=0; DnssecMaxSigFail=0; DnssecMaxWork=0; Bootp=0; Pxe=0; DhcpAck=0; DhcpDecline=0; DhcpDiscover=0; DhcpInform=0; DhcpNak=0; DhcpOffer=0; DhcpRelease=0; DhcpRequest=0; Noanswer=0; LeasesAllocated4=0; LeasesPruned4=0; LeasesAllocated6=0; LeasesPruned6=0; TcpConnections=0; DhcpLeasequery=0; DhcpLeaseUnassigned=0; DhcpLeaseActve=0; DhcpLeaseUnknown=0}

Get-PiHoleInfoSensors

Get-PiHoleInfoSensors -PiHoleServer $PiHoleServer -Password $Password

List     : {@{Name=cpu_thermal; Path=hwmon0; Source=devices/virtual/thermal/thermal_zone0; Temps=}, @{Name=rpi_volt; Path=hwmon1; Source=devices/platform/soc/soc:firmware/raspberrypi-hwmon; Temps=}}
CpuTemp  : 40.084
HotLimit : 60
Unit     : C

Get-PiHoleInfoDatabase

Get-PiHoleInfoDatabase -PiHoleServer $PiHoleServer -Password $Password

Size                  : 13983744
Type                  : Regular file
Mode                  : rw-r-----
AccessTime            : 6/25/2025 12:32:44 AM
ModifiedTime          : 10/1/2026 2:06:00 PM
ChangeTime            : 10/1/2026 2:06:00 PM
Owner                 : @{User=; Group=}
Queries               : 52
EarliestTimestamp     : 9/30/2026 3:10:00 PM
QueriesDisk           : 52
EarliestTimestampDisk : 
SqliteVersion         : 3.53.1

Get-PiHoleInfoVersion

Get-PiHoleInfoVersion -PiHoleServer $PiHoleServer -Password $Password

Core   : @{Local=; Remote=}
Web    : @{Local=; Remote=}
Ftl    : @{Local=; Remote=}
Docker : @{Local=; Remote=}

Get-PiHoleInfoMetrics

Get-PiHoleInfoMetrics -PiHoleServer $PiHoleServer -Password $Password

Dns  : @{Cache=; Replies=}
Dhcp : @{Ack=0; Nak=0; Decline=0; Offer=0; Discover=0; Inform=0; Request=0; Release=0; NoAnswer=0; Bootp=0; Pxe=0; Leases=}

Get-PiHoleInfoClient

Does not require -Password - the API does not authenticate this endpoint.

Get-PiHoleInfoClient -PiHoleServer $PiHoleServer

RemoteAddress : 192.168.1.162
HttpVersion   : 1.1
Method        : GET
Headers       : {@{Name=Host; Value=dns3.localdomain:8489}, @{Name=User-Agent; Value=Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.26200; en-US) PowerShell/7.6.6}, @{Name=Accept-Encoding; Value=gzip, deflate, br}, @{Name=Content-Type; Value=application/json}…}

Get-PiHoleInfoLogin

Does not require -Password - the API does not authenticate this endpoint (it is meant to be usable before logging in).

Get-PiHoleInfoLogin -PiHoleServer $PiHoleServer

HttpsPort : 8489
Dns       : True

Get-PiHoleInfoMessage

Get-PiHoleInfoMessage -PiHoleServer $PiHoleServer -Password $Password

Id        : 1
Timestamp : 10/1/2026 8:28:21 AM
Type      : LIST
Plain     : List with ID 63 (https://codeberg.org/hagezi/mirror2/raw/branch/main/dns-blocklists/domains/light.txt) was inaccessible during last gravity run
Html      : <a href="groups/lists?listid=63">List with ID <strong>63</strong> (<code>https://codeberg.org/hagezi/mirror2/raw/branch/main/dns-blocklists/domains/light.txt</code>)</a> was inaccessible during last gravity run

Id        : 2
Timestamp : 10/1/2026 9:38:21 AM
Type      : LOAD
Plain     : Long-term load (15min avg) larger than number of processors: 1.0 > 1
Html      : Long-term load (15min avg) larger than number of processors: <strong>1.0 &gt; 1</strong><br>This may slow down DNS resolution and can cause bottlenecks.

Get-PiHoleInfoMessageCount

Get-PiHoleInfoMessageCount -PiHoleServer $PiHoleServer -Password $Password

Count : 2

Remove-PiHoleInfoMessage

Diagnosis messages arise from real FTL warnings and cannot be manufactured on demand, so this example shows the error for a message ID that does not exist rather than a fabricated success.

Remove-PiHoleInfoMessage -PiHoleServer $PiHoleServer -Password $Password -MessageId 3

Error : Response status code does not indicate success: 404 (Not Found).

Get-PiHoleLogWebserver

Get-PiHoleLogWebserver -PiHoleServer $PiHoleServer -Password $Password

Log    : {@{Timestamp=10/1/2026 8:28:22 AM; Message=Initializing HTTP server on ports "8089,8489s"; Priority=}, @{Timestamp=10/1/2026 8:31:16 AM; Message=ACCESS: 192.168.1.162 - - [01/Oct/2026:13:31:15 +0000] "PATCH /api/config?restart=false HTTP/1.1" 200 4588 - Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.26200; en-US) PowerShell/7.6.6; Priority=}, @{Timestamp=10/1/2026 8:31:17 AM; Message=ACCESS: 192.168.1.162 - - [01/Oct/2026:13:31:16 +0000] "DELETE /api/auth HTTP/1.1" 204 558 - Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.26200; en-US) PowerShell/7.6.6; Priority=}, @{Timestamp=10/1/2026 8:31:26 AM; Message=ACCESS: 192.168.1.162 - - [01/Oct/2026:13:31:17 +0000] "POST /api/auth HTTP/1.1" 200 807 - Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.26200; en-US) PowerShell/7.6.6; Priority=}…}
NextID : 31
Pid    : 388
File   : /var/log/pihole/webserver.log

Get-PiHoleLogDnsmasq

Get-PiHoleLogDnsmasq -PiHoleServer $PiHoleServer -Password $Password

Log    : {@{Timestamp=10/1/2026 8:28:22 AM; Message=started, version pi-hole-v2.93 cachesize 10000; Priority=}, @{Timestamp=10/1/2026 8:28:22 AM; Message=DNS service limited to local subnets; Priority=}, @{Timestamp=10/1/2026 8:28:22 AM; Message=compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n IDN2 DHCP DHCPv6 Lua TFTP no-conntrack ipset no-nftset auth DNSSEC loop-detect inotify dumpfile; Priority=}, @{Timestamp=10/1/2026 8:28:22 AM; Message=using nameserver 8.8.8.8#53; Priority=}…}
NextID : 69
Pid    : 388
File   : /var/log/pihole/pihole.log

Get-PiHoleLogFtl

Get-PiHoleLogFtl -PiHoleServer $PiHoleServer -Password $Password

Log    : {@{Timestamp=10/1/2026 8:54:42 AM; Message=Wrote config file:; Priority=INFO}, @{Timestamp=10/1/2026 8:54:42 AM; Message= - 167 total entries; Priority=INFO}, @{Timestamp=10/1/2026 8:54:42 AM; Message= - 157 entries are default; Priority=INFO}, @{Timestamp=10/1/2026 8:54:42 AM; Message= - 10 entries are modified; Priority=INFO}…}
NextID : 797
Pid    : 388
File   : /var/log/pihole/FTL.log

Get-PiHoleTeleporterDownload

FolderPath/FileName are yours to choose; the captured output below used a scratch temp folder for this run instead of C:\Backups.

Get-PiHoleTeleporterDownload -PiHoleServer $PiHoleServer -Password $Password -FolderPath "C:\Backups" -FileName "pihole-backup"

FileName   : pihole-backup.zip
FilePath   : C:\Users\mmadeja\AppData\Local\Temp\PiHoleShellDocsExample\pihole-backup.zip
RootFolder : C:\Users\mmadeja\AppData\Local\Temp\PiHoleShellDocsExample
FileSizeKB : 25

Get-PiHoleHistory

Get-PiHoleHistory -PiHoleServer $PiHoleServer -Password $Password

Timestamp : 9/30/2026 3:15:00 PM
Total     : 0
Cached    : 0
Blocked   : 0
Forwarded : 0

Timestamp : 9/30/2026 3:25:00 PM
Total     : 0
Cached    : 0
Blocked   : 0
Forwarded : 0

Timestamp : 9/30/2026 3:35:00 PM
Total     : 0
Cached    : 0
Blocked   : 0
Forwarded : 0

Timestamp : 9/30/2026 3:45:00 PM
Total     : 0
Cached    : 0
Blocked   : 0
Forwarded : 0

Timestamp : 9/30/2026 3:55:00 PM
Total     : 0
Cached    : 0
Blocked   : 0
Forwarded : 0

_(showing 5 of 145 results)_

Get-PiHoleHistoryClient

Get-PiHoleHistoryClient -PiHoleServer $PiHoleServer -Password $Password

Timestamp : 9/30/2026 3:15:00 PM
Clients   : {@{IP=192.168.1.162; Name=; Count=0}, @{IP=others; Name=; Count=0}}

Timestamp : 9/30/2026 3:25:00 PM
Clients   : {@{IP=192.168.1.162; Name=; Count=0}, @{IP=others; Name=; Count=0}}

Timestamp : 9/30/2026 3:35:00 PM
Clients   : {@{IP=192.168.1.162; Name=; Count=0}, @{IP=others; Name=; Count=0}}

Timestamp : 9/30/2026 3:45:00 PM
Clients   : {@{IP=192.168.1.162; Name=; Count=0}, @{IP=others; Name=; Count=0}}

Timestamp : 9/30/2026 3:55:00 PM
Clients   : {@{IP=192.168.1.162; Name=; Count=0}, @{IP=others; Name=; Count=0}}

_(showing 5 of 145 results)_

Get-PiHoleHistoryDatabase

Defaults to the last 8 hours; pass -From/-Until for a different window.

Get-PiHoleHistoryDatabase -PiHoleServer $PiHoleServer -Password $Password

Timestamp : 10/1/2026 9:00:00 AM
Total     : 42
Cached    : 5
Blocked   : 10
Forwarded : 27

Timestamp : 10/1/2026 10:00:00 AM
Total     : 3
Cached    : 3
Blocked   : 0
Forwarded : 0

Timestamp : 10/1/2026 11:00:00 AM
Total     : 3
Cached    : 3
Blocked   : 0
Forwarded : 0

Timestamp : 10/1/2026 12:00:00 PM
Total     : 1
Cached    : 1
Blocked   : 0
Forwarded : 0

Timestamp : 10/1/2026 1:00:00 PM
Total     : 1
Cached    : 1
Blocked   : 0
Forwarded : 0

_(showing 5 of 7 results)_

Get-PiHoleHistoryDatabaseClient

Defaults to the last 8 hours; pass -From/-Until for a different window.

Get-PiHoleHistoryDatabaseClient -PiHoleServer $PiHoleServer -Password $Password

Timestamp : 10/1/2026 3:00:00 PM
Clients   : @{ClientId=3; Count=1}

Timestamp : 10/1/2026 2:00:00 PM
Clients   : @{ClientId=3; Count=1}

Timestamp : 10/1/2026 1:00:00 PM
Clients   : @{ClientId=3; Count=1}

Timestamp : 10/1/2026 12:00:00 PM
Clients   : @{ClientId=3; Count=1}

Timestamp : 10/1/2026 11:00:00 AM
Clients   : @{ClientId=3; Count=1}

_(showing 5 of 7 results)_

Get-PiHoleNetworkGateway

Get-PiHoleNetworkGateway -PiHoleServer $PiHoleServer -Password $Password

Family    : inet
Interface : wlan0
Address   : 192.168.1.1
Local     : 192.168.1.248

Get-PiHoleNetworkRoute

Get-PiHoleNetworkRoute -PiHoleServer $PiHoleServer -Password $Password

Table    : 254
Family   : inet
Protocol : boot
Scope    : universe
Type     : unicast
Flags    : 
Gateway  : 192.168.1.1
Oif      : wlan0
Dst      : default

Table    : 254
Family   : inet
Protocol : kernel
Scope    : link
Type     : unicast
Flags    : 
Dst      : 192.168.1.0
Prefsrc  : 192.168.1.248
Oif      : wlan0

Table    : 255
Family   : inet
Protocol : kernel
Scope    : host
Type     : local
Flags    : 
Dst      : 127.0.0.0
Prefsrc  : 127.0.0.1
Oif      : lo

Table    : 255
Family   : inet
Protocol : kernel
Scope    : host
Type     : local
Flags    : 
Dst      : 127.0.0.1
Prefsrc  : 127.0.0.1
Oif      : lo

Table    : 255
Family   : inet
Protocol : kernel
Scope    : link
Type     : broadcast
Flags    : 
Dst      : 127.255.255.255
Prefsrc  : 127.0.0.1
Oif      : lo

_(showing 5 of 11 results)_

Get-PiHoleNetworkInterface

Get-PiHoleNetworkInterface -PiHoleServer $PiHoleServer -Password $Password

Name      : lo
Speed     : 
Type      : loopback
Flags     : {up, loopback, running, lower_up}
State     : unknown
Carrier   : True
ProtoDown : False
Address   : 00:00:00:00:00:00
Broadcast : 00:00:00:00:00:00
Stats     : @{RxBytes=; TxBytes=; Bits=64}
Addresses : {@{Family=inet; Scope=host; Flags=permanent; Prefixlen=8; Address=127.0.0.1; AddressType=loopback; Local=127.0.0.1; LocalType=loopback; Label=lo; Prefered=4294967295; Valid=4294967295; Cstamp=1790649663.02; Tstamp=1790649663.02}, @{Family=inet6; Scope=host; Flags=permanent; Prefixlen=128; Address=::1; AddressType=loopback; Prefered=4294967295; Valid=4294967295; Cstamp=1790649663.02; Tstamp=1790649663.02}}

Name        : wlan0
Speed       : 
Type        : ether
Flags       : {up, broadcast, running, multicast…}
State       : up
Carrier     : True
ProtoDown   : False
Address     : b8:27:eb:11:a4:d5
Broadcast   : ff:ff:ff:ff:ff:ff
PermAddress : b8:27:eb:11:a4:d5
Stats       : @{RxBytes=; TxBytes=; Bits=64}
Addresses   : {@{Family=inet; Scope=universe; Flags=; Prefixlen=24; Address=192.168.1.248; AddressType=private; Local=192.168.1.248; LocalType=private; Broadcast=192.168.1.255; BroadcastType=private; Label=wlan0; Prefered=63266; Valid=63266; Cstamp=1790649687.41; Tstamp=1790862827.1}, @{Family=inet6; Scope=link; Flags=permanent; Prefixlen=64; Address=fe80::ba27:ebff:fe11:a4d5; AddressType=link-local (LL); Prefered=4294967295; Valid=4294967295; Cstamp=1790649682.83; Tstamp=1790649682.83}}

Get-PiHoleNetworkDevice

Shows up to 10 devices by default; pass -MaxDevices for more.

Get-PiHoleNetworkDevice -PiHoleServer $PiHoleServer -Password $Password

Id         : 2
HwAddr     : ip-127.0.0.1
Interface  : lo
FirstSeen  : 10/1/2026 9:03:33 AM
LastQuery  : 10/1/2026 3:00:00 PM
NumQueries : 13
MacVendor  : 
Ips        : @{Ip=127.0.0.1; Name=localhost; LastSeen=10/1/2026 3:19:00 PM; NameUpdated=10/1/2026 3:19:00 PM}

Id         : 1
HwAddr     : 74:56:3c:bb:f4:0b
Interface  : wlan0
FirstSeen  : 10/1/2026 9:03:32 AM
LastQuery  : 10/1/2026 9:03:33 AM
NumQueries : 39
MacVendor  : Giga-Byte Technology Co.,Ltd.
Ips        : @{Ip=192.168.1.162; Name=; LastSeen=10/1/2026 3:19:00 PM; NameUpdated=12/31/1969 6:00:00 PM}

Remove-PiHoleNetworkDevice

Network devices arise from Pi-hole having genuinely seen a device and cannot be manufactured on demand, so this example shows the error for a device ID that does not exist rather than a fabricated success.

Remove-PiHoleNetworkDevice -PiHoleServer $PiHoleServer -Password $Password -DeviceId 5

Error : Response status code does not indicate success: 404 (Not Found).

Get-PiHoleDhcpLease

Get-PiHoleDhcpLease -PiHoleServer $PiHoleServer -Password $Password
(no output)

Remove-PiHoleDhcpLease

DHCP leases arise from Pi-hole genuinely handing one out and cannot be manufactured on demand, so this example shows the error for an IP address with no active lease rather than a fabricated success.

Remove-PiHoleDhcpLease -PiHoleServer $PiHoleServer -Password $Password -Ip "192.168.1.50"

Error : Response status code does not indicate success: 400 (Bad Request).

Authentication

Get-PiHoleAuthStatus

Password is optional - omit it to check whether your Pi-hole requires a login at all for this client, without authenticating. This test server does require login, so the result below is from a real authenticated check.

Get-PiHoleAuthStatus -PiHoleServer $PiHoleServer -Password $Password

Valid    : True
Totp     : False
Sid      : 8sHZ0t+C5DwLRgIcKIM7/g=
Csrf     : 1xmNq2FNUPFo7bnCRoUzIQ=
Validity : 1800
Message  : correct password

Get-PiHoleAuthTotp

Get-PiHoleAuthTotp -PiHoleServer $PiHoleServer -Password $Password

Type      : totp
Account   : pi.hole
Issuer    : Pi-hole%20API
Algorithm : SHA1
Digits    : 6
Period    : 30
Offset    : 0
Secret    : XP4YEGF2S75KCDBN7BSW37AEA65AQZBQ
Codes     : {414882, 273855, 226959, 897753…}

Get-PiHoleCurrentAuthSession

Get-PiHoleCurrentAuthSession -PiHoleServer $PiHoleServer -Password $Password

Id             : 0
CurrentSession : True
Valid          : True
TlsLogin       : True
TlsMixed       : False
LoginAt        : 10/1/2026 3:10:59 PM
LastActive     : 10/1/2026 3:11:03 PM
ValidUntil     : 10/1/2026 3:41:03 PM
RemoteAddress  : 192.168.1.162
UserAgent      : Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.26200; en-US) PowerShell/7.6.6
XForwardedFor  : 
App            : True
Cli            : False

Remove-PiHoleAuthSession

Deletes a session by its ID (as shown by Get-PiHoleCurrentAuthSession), not the caller's own session.

Remove-PiHoleAuthSession -PiHoleServer $PiHoleServer -Password $Password -Id 0


Id     : 0
Status : Removed

Remove-PiHoleCurrentAuthSession

The internal best-effort logout every other function calls automatically when it finishes - it never produces output, even on failure (a warning only). Shown here for completeness since it is still a publicly exported function.

Remove-PiHoleCurrentAuthSession -PiHoleServer $PiHoleServer -Sid $Sid
(no output)