internal/filter/environment.filter.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
$paramCon = @{
    Module = 'PSFramework'
    Type = 'Static'
}

$null = New-PSFFilterConditionSet -Module PSFramework -Name Environment -Version '1.0.0' -ScriptBlock {
    #region OS Version
    New-PSFFilterCondition @paramCon -Name OSWindows -ScriptBlock {
        $PSVersionTable.PSVersion.Major -lt 6 -or $global:IsWindows
    }
    New-PSFFilterCondition @paramCon -Name OSLinux -ScriptBlock {
        $PSVersionTable.PSVersion.Major -ge 6 -and $global:IsLinux
    }
    New-PSFFilterCondition @paramCon -Name OSMacOS -ScriptBlock {
        $PSVersionTable.PSVersion.Major -ge 6 -and $global:IsMacOS
    }
    #endregion OS Version
    
    #region PS Version
    New-PSFFilterCondition @paramCon -Name PS3 -ScriptBlock {
        $PSVersionTable.PSVersion.Major -eq 3
    }
    New-PSFFilterCondition @paramCon -Name PS4 -ScriptBlock {
        $PSVersionTable.PSVersion.Major -eq 4
    }
    New-PSFFilterCondition @paramCon -Name PS5 -ScriptBlock {
        $PSVersionTable.PSVersion.Major -eq 5
    }
    New-PSFFilterCondition @paramCon -Name PS6 -ScriptBlock {
        $PSVersionTable.PSVersion.Major -eq 6
    }
    New-PSFFilterCondition @paramCon -Name PS7_0 -ScriptBlock {
        $PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -eq 0
    }
    New-PSFFilterCondition @paramCon -Name PS7_1 -ScriptBlock {
        $PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -eq 1
    }
    New-PSFFilterCondition @paramCon -Name PS7_2 -ScriptBlock {
        $PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -eq 2
    }
    New-PSFFilterCondition @paramCon -Name PS5Plus -ScriptBlock {
        $PSVersionTable.PSVersion.Major -ge 5
    }
    New-PSFFilterCondition @paramCon -Name PS6Plus -ScriptBlock {
        $PSVersionTable.PSVersion.Major -ge 6
    }
    New-PSFFilterCondition @paramCon -Name PS7Plus -ScriptBlock {
        $PSVersionTable.PSVersion.Major -ge 7
    }
    #endregion PS Version
    
    #region Elevation
    New-PSFFilterCondition @paramCon -Name Elevated -ScriptBlock {
        if ($PSVersionTable.PSVersion.Major -ge 6 -and $global:IsLinux) { return $true }
        if ($PSVersionTable.PSVersion.Major -ge 6 -and $global:IsLinux) { return $true }
        
        $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
        $principal = New-Object Security.Principal.WindowsPrincipal $identity
        $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
    }
    #endregion Elevation
    
    #region Pipelines
    New-PSFFilterCondition @paramCon -Name EnvGithubAction -ScriptBlock {
        (Get-Item env:GITHUB_ACTION -ErrorAction Ignore) -as [bool]
    }
    New-PSFFilterCondition @paramCon -Name EnvAzDevPipeline -ScriptBlock {
        (Get-Item 'env:System.CollectionId' -ErrorAction Ignore) -and (Get-Item 'env:System.DefaultWorkingDirectory' -ErrorAction Ignore)
    }
    #endregion Pipelines
}