PowerShell系列九:文档和测试
  ymimIgn1vImn 2023年11月13日 16 0

文档

function Add-Access {
    <#
    .SYNOPSIS
    文件和目录添加访问权限
    
    .DESCRIPTION
    Icacls的包装,能够对目录和文件添加三种权限。
    读取,修改,完全控制
    
    .PARAMETER Path
    需要添加权限的{文件 | 目录}
    
    .PARAMETER User
    授予访问权限的用户
    
    .PARAMETER Access
    具体的访问权限枚举类型{"Read" | "Modify" | "Full"}。
    小技巧 -Access 空格,TAB键可以补全,在三个值之间切换
    
    .EXAMPLE
    Add-Access -Path c:\temp -User Bob -Access Read
    为用户Bob在C:\temp文件夹中添加只读权限

     .EXAMPLE
    Add-Access -Path c:\temp -User Bob -Access Modify
    为用户Bob在C:\temp文件夹中添加修改权限

    .NOTES
    General notes
    #>
具体代码在系列八,在函数中添加的文档.....
}

文档的用法,用的是. .源加载,会把函数保留在内存中。文档的具体用法请参考系列五。 文档.png

测试

PowerShell的测试框架是Pester.

BeforeAll {
    . $PSCommandPath.Replace('.Tests.ps1', '.ps1')
    $path = 'C:\users\sgq1219\temp'
    $user = 'Bob'
    mkdir $path
    "Hello world!" | out-file $path\hello.txt -Encoding utf8
    $base = Get-Access -Path $path
    
}

Describe "Test-Access" {
    
    It 'Test var'{
        'a' | Should -Be 'a'
    }

    It 'Test Get-Access'{
        $s = icacls $path
        $d = Get-Access $path
        $s | Should -Be $d
    }

    It 'Add-Access'{
        new-localuser -name $user -NoPassword
        Add-Access -Path $path -User $user -Access 'Read'
        [bool]$s = Get-Access -Path $path | Select-String -Pattern '(Bob):\(Oi\)\(Ci\)\(R\)' -Quiet
        $s | Should -Be $true
        
        Add-Access -Path $path -User $user -Access 'Modify'
        [bool]$s = Get-Access -Path $path | Select-String -Pattern '(Bob):\(Oi\)\(Ci\)\(M\)' -Quiet
        $s | Should -Be $true

        Add-Access -Path $path -User $user -Access 'Full'
        [bool]$s = Get-Access -Path $path | Select-String -Pattern '(Bob):\(Oi\)\(Ci\)\(F\)' -Quiet
        $s | Should -Be $true
    }

    It "Remove-Access"{
        Remove-Access -Path $path -User $User
        $s = Get-Access -Path $path | Select-String -Pattern '(Bob):\(Oi\)\(Ci\)' -Quiet 
        $s = $s -as [bool]
        $s | Should -Be $false
    }

    It "Reset-Access"{
        Reset-Access -Path $Path
        $s = Get-Access -Path $Path
        $s | Should -Be $base
    }
}

AfterAll{
    remove-item -Path $path -Force -Recurse
    Remove-LocalUser -Name $user
}

test.png 基本上都是常规操作,如果用过其它语言的测试框架。步骤基本一样,比如python的pytest。 在顶上设置前置条件,中间执行函数测试,最后清理测试环境。 Python用assert,PowerShell用Should。但是原理都是一样的都是用的断言,执行一些操作,然后读取输出,或者查询信息,看和预期的是不是一样。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论