PowerShell을 사용하여 무작위 암호 생성 잠금 해제

중요한 것은 비밀번호를 길게 유지하고 쉽게 추측할 수 없도록하는 것입니다. 안전한 비밀번호를 만드는 방법을 알 수 있지만, 그것을 위한 작은 스크립트가 있으면 좋지 않을까요? 운이 좋은 것은 Windows에서 PowerShell을 사용하여 다양한 길이와 복잡성의 랜덤 비밀번호 생성기를 만들 수 있다는 것입니다.

자체 랜덤 비밀번호 생성기를 만드는 대신에, Microsoft가 이미 제공하는 기존 방법을 사용하세요. 그것은 GeneratePassword() .NET 메소드라고 불리며, System.Web.Security.Membership 클래스와 함께 제공됩니다. 이 메소드는 필요한 모든 작업을 수행할 것입니다.

스크립트 만들기

이 간단한 스크립트를 만들려면 먼저 System.Web 어셈블리를 사용할 수 있어야 합니다. System.Web.Security.Membership 클래스는 이 어셈블리의 일부이며 기본적으로 사용할 수 없습니다.

Add-Type -AssemblyName 'System.Web'

System.Web 어셈블리를 사용할 수 있게 되면 GeneratePassword() 메소드를 호출할 수 있습니다.

GeneratePassword() 메소드에는 두 개의 인수, 즉 lengthnumberOfNonAlphanumericCharacters가 있습니다. 이 두 인수를 사용하면 PowerShell로 다양한 종류의 랜덤 비밀번호를 생성할 수 있습니다.

  • 길이 – 이것은 비밀번호의 문자 길이입니다.
  • numberOfNonAlphanumericCharacters – 이것은 메소드가 생성할 비알파벳 문자의 수입니다. 예를 들어 @,%,& 등의 문자를 생각하십시오.

먼저, 원하는 비밀번호의 길이를 정의하세요. 아래 예제는 10을 변수로 설정하고 이를 메서드에 전달합니다.

$length = 10

다음으로, 비밀번호에 포함하고 싶은 비알파벳 문자의 수를 정의하세요. 아래 코드 스니펫은 5를 변수로 설정하여 메서드에 제공하여 비밀번호에 5개의 비알파벳 문자가 포함되도록합니다.

$nonAlphaChars = 5

다음은 위에서 정의한 두 변수의 값을 전달하여 GeneratePassword() 메서드를 호출할 때입니다.

[System.Web.Security.Membership]::GeneratePassword($length, $nonAlphaChars)

위의 코드 스니펫을 실행하면 PowerShell이 문자열의 무작위 조합을 반환하여 원하는 곳에 사용할 수 있습니다.

무작위 비밀번호 길이 만들기

비밀번호 길이를 무작위로 만들어 더 무작위하게 만들 수도 있습니다. Get-Random cmdlet을 사용하여 무작위 정수를 생성한 다음 이를 length 인수로 사용하여 무작위 길이의 비밀번호를 생성할 수도 있습니다!

$minLength = 5 ## 문자
$maxLength = 10 ## 문자
$length = Get-Random -Minimum $minLength -Maximum $maxLength
$nonAlphaChars = 5
$password = [System.Web.Security.Membership]::GeneratePassword($length, $nonAlphaChars)

이 비밀번호를 PowerShell에서 사용할 예정이라면 많은 구성 요소에서 안전한 문자열이 필요합니다. 일단 비밀번호를 일반 텍스트 문자열로 얻은 후 ConvertTo-SecureString cmdlet을 사용하여 안전한 문자열로 변환할 수 있습니다.

$secPw = ConvertTo-SecureString -String $password -AsPlainText -Force

PowerShell 함수 만들기

마지막으로, 위에서 설명한 모든 구문을 기억하지 않고도 어디서든 사용할 수 있는 함수를 생성하여 이 무작위 비밀번호 생성기를 더욱 향상시키세요.

function New-RandomPassword {
    param(
        [Parameter()]
        [int]$MinimumPasswordLength = 5,
        [Parameter()]
        [int]$MaximumPasswordLength = 10,
        [Parameter()]
        [int]$NumberOfAlphaNumericCharacters = 5,
        [Parameter()]
        [switch]$ConvertToSecureString
    )
    
    Add-Type -AssemblyName 'System.Web'
    $length = Get-Random -Minimum $MinimumPasswordLength -Maximum $MaximumPasswordLength
    $password = [System.Web.Security.Membership]::GeneratePassword($length,$NumberOfAlphaNumericCharacters)
    if ($ConvertToSecureString.IsPresent) {
        ConvertTo-SecureString -String $password -AsPlainText -Force
    } else {
        $password
    }
}

이 기능을 프로필에 추가한 후에는, PowerShell 모듈을 사용하거나 현재 세션에 복사/붙여넣기하여 간단히 실행할 수 있습니다.

New-RandomPassword -MinimumPasswordLength 10 -MaximumPasswordLength 15 -NumberOfAlphaNumericCharacters 6 -ConvertToSecureString

Source:
https://adamtheautomator.com/random-password-generator/