Public/LocalUser.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
<#
.SYNOPSIS
    Test if a local user exists and is enabled.
.DESCRIPTION
    Test if a local user exists and is enabled.
.PARAMETER Target
    The local user name to test for. Eg 'Guest'
.PARAMETER Should
    A Script Block defining a Pester Assertion.
.EXAMPLE
    LocalUser 'Guest' { should not BeNullOrEmpty }
.EXAMPLE
    LocalUser 'Guest' Disabled { should Be $true }
.NOTES
    Assertions: Be, BeExactly, BeNullOrEmpty, Match, MatchExactly
#>

    
function LocalUser {
    [CmdletBinding(DefaultParameterSetName="Default")]
    param(
        [Parameter(Mandatory, Position=1,ParameterSetName="Default")]
        [Parameter(Mandatory, Position=1,ParameterSetName="Property")]
        [Alias('Name')]
        [string]$Target,

        [Parameter(Position=2,ParameterSetName="Property")]
        [string]$Property,
        
        [Parameter(Mandatory, Position=2,ParameterSetName="Default")]
        [Parameter(Mandatory, Position=3,ParameterSetName="Property")]
        [scriptblock]$Should
    )

    $expression = {Get-CimInstance -ClassName Win32_UserAccount -filter "LocalAccount=True AND` Name='$Target'"}
    
    $params = Get-PoshspecParam -TestName LocalUser -TestExpression $expression @PSBoundParameters
    
    Invoke-PoshspecExpression @params
}