#AvoidUsingPlainTextForPassword 
**Severity Level: Warning**


##Description

Password parameters that take in plaintext will expose passwords and compromise the security of your system.

##How to Fix

To fix a violation of this rule, please use SecurityString as the type of password parameter.

##Example

Wrong： 
```
    function Verb-Noun
    {
        [CmdletBinding()]
        [Alias()]
        [OutputType([int])]
        Param
        (
            # Param1 help description
            [Parameter(Mandatory=$true,
                       ValueFromPipelineByPropertyName=$true,
                       Position=0)]
            $Param1,
            # Param2 help description
            [int]
            $Param2,
            [SecureString]
            $Password,
            [System.Security.SecureString]
            $Pass,
            [SecureString[]]
            $Passwords,
            $Passphrases,
            $Passwordparam
        )
    }

    function TestFunction($password, [System.Security.SecureString[]]passphrases, [String]$passThru){
    }
```

Correct: 

```
	function Test-Script
	{
	    [CmdletBinding()]
	    [Alias()]
	    [OutputType([Int])]
	    Param
	    (
	        # Param1 help description
	        [Parameter(Mandatory=$true,
	                   ValueFromPipelineByPropertyName=$true,
	                   Position=0)]
	        $Param1,
	        # Param2 help description
	        [int]
	        $Param2,
	        [SecureString]
	        $Password,
	        [System.Security.SecureString]
	        $Pass,
		[SecureString[]]
	        $Passwords,
	        [SecureString]
    		$Passphrases,
    	    	[SecureString]
    		$PasswordParam,
    	    	[string]
    	    	$PassThru
    	    )
    	    ...
	}

	function TestFunction([SecureString]$Password, [System.Security.SecureString[]]$Passphrases, [SecureString[]]$passes){
	}
```

#AvoidUsingPlainTextForPassword 
**Severity Level: Warning**


##Description

Password parameters that take in plaintext will expose passwords and compromise the security of your system.

##How to Fix

To fix a violation of this rule, please use SecureString as the type of password parameter.

##Example

Wrong： 
```
    function Test-Script
    {
        [CmdletBinding()]
        [Alias()]
        [OutputType([int])]
        Param
        (
            [string]
            $Password,
            [string]
            $Pass,
            [string[]]
            $Passwords,
            $Passphrases,
            $Passwordparam
        )
    }
```

Correct: 

```
	function Test-Script
	{
	    [CmdletBinding()]
	    [Alias()]
	    [OutputType([Int])]
	    Param
	    (
			[SecureString]
			$Password,
			[System.Security.SecureString]
			$Pass,
			[SecureString[]]
			$Passwords,
			[SecureString]
			$Passphrases,
			[SecureString]
			$PasswordParam
		)
	        ...
	}

```

Fix recommended type and clean up examples.
Fix recommended type and clean up examples.

The recommended type has a typo.

The 'wrong' and 'correct' examples are inconsistent and include unnecessary extra parameters which (in my opinion) distract from the point being conveyed. Also fixed up spacing.