PowerShell을 사용하여 임의의 문자열 생성 방법
-
PowerShell에서 무작위 문자열을 생성하는
Get-Random
Cmdlet 사용하기 -
PowerShell에서 무작위 비밀번호를 생성하는
GeneratePassword()
함수 사용하기 -
PowerShell에서 무작위 문자열을 생성하는
New-Guid
Cmdlet 사용하기 -
PowerShell에서 문자 집합과 함께
Get-Random
Cmdlet을 사용하여 무작위 문자열 생성하기 - 결론

Active Directory를 관리할 때, 고유한 임시 비밀번호로 대량 사용자를 가져오는 작업은 도전적일 수 있습니다. 다행히도 PowerShell은 이러한 작업을 간소화하기 위해 무작위 문자열을 생성하는 효과적인 솔루션을 제공합니다.
이 기사에서는 PowerShell에서 여러 방법을 사용하여 이를 달성하는 방법을 알아보겠습니다.
PowerShell에서 무작위 문자열을 생성하는 Get-Random
Cmdlet 사용하기
PowerShell은 무작위 문자나 숫자를 선택하는 네이티브 명령인 Get-Random
을 제공합니다. Get-Random
명령에 항목 배열을 제공하면, 해당 컬렉션에서 하나 이상의 객체를 무작위로 선택합니다.
비밀번호를 생성할 때, 서로 다른 input
매개변수(특수 문자, 숫자, 대문자 및 소문자)로 Get-Random
cmdlet을 네 번 호출하고 결과 문자열을 연결한 다음, 다른 Get-Random
호출을 사용하여 이를 섞을 수 있습니다.
아래 예제에서는 대문자(U
), 소문자(L
), 숫자(N
), 특수 문자(S
)에 대한 문자 집합을 저장하기 위해 $TokenSet
이라는 해시 테이블을 정의합니다. 이 코드 줄 $variablename = Get-Random -Count 5 -InputObject $TokenSet.U
는 문자 집합(U
, L
, N
, S
)에서 5개의 문자를 무작위로 선택하고 이를 변수($Upper
, $Lower
, $Number
, $Special
)에 저장합니다.
그런 다음, 각 집합에서 무작위로 선택된 문자를 하나의 문자 집합인 $StringSet
으로 결합합니다. 마지막으로, $StringSet
에서 선택하여 15자의 무작위 문자열을 생성하고, 이를 결합하여 최종 비밀번호를 형성합니다.
예제 코드:
$TokenSet = @{
U = [Char[]]'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
L = [Char[]]'abcdefghijklmnopqrstuvwxyz'
N = [Char[]]'0123456789'
S = [Char[]]'!"#$%&''()*+,-./:;<=>?@[\]^_`{|}~'
}
$Upper = Get-Random -Count 5 -InputObject $TokenSet.U
$Lower = Get-Random -Count 5 -InputObject $TokenSet.L
$Number = Get-Random -Count 5 -InputObject $TokenSet.N
$Special = Get-Random -Count 5 -InputObject $TokenSet.S
$StringSet = $Upper + $Lower + $Number + $Special
(Get-Random -Count 15 -InputObject $StringSet) -join ''
출력:
9ZimEXDW*@xo?12
위 코드는 매번 다른 문자열을 생성합니다. 그러나 Get-Random
cmdlet에 여러 번 호출이 포함되어 있어, 스크립트가 길어지고 처리 시간이 느려질 수 있습니다.
다음 섹션에서는 몇 줄의 코드로 동일한 기능을 수행하는 방법에 대해 설명합니다.
PowerShell에서 무작위 비밀번호를 생성하는 GeneratePassword()
함수 사용하기
비밀번호 전용 문자열을 생성해야 하는 경우, [System.Web.Security]
네임스페이스에서 GeneratePassword()
함수를 사용할 수 있습니다. 이 함수를 사용하려면 먼저 System.Web
라이브러리를 로드해야 합니다.
[Reflection.Assembly]::LoadWithPartialName("System.Web")
로드한 후, GeneratePassword()
함수를 실행하여 무작위로 비밀번호를 생성할 수 있습니다.
아래 코드에서는 [System.Web.Security.Membership]
네임스페이스를 사용하여 GeneratePassword()
함수에 접근합니다.
예제 코드:
[System.Web.Security.Membership]::GeneratePassword(15, 2)
출력:
QQjj*LJ:e=YZ)Fo
위 예제 코드에서 볼 수 있듯이, GeneratePassword()
함수는 두 개의 인수를 받습니다:
-
첫 번째 인수는 비밀번호에 필요한 전체 문자 수를 나타내는 정수 값입니다.
-
두 번째 인수는 비밀번호에 대한 특수 문자 수를 나타내는 정수 값입니다.
그러나 이 코드는 비밀번호에 적어도 하나의 숫자가 포함된다는 것을 보장하지 않습니다. 숫자가 적어도 하나 포함되도록 하려면 다음 코드를 사용할 수 있습니다.
예제 코드:
do {
$pwd = [System.Web.Security.Membership]::GeneratePassword(15, 2)
} until ($pwd -match '\d')
$pwd
먼저, do
키워드를 사용하여 비밀번호를 생성하고 적어도 하나의 숫자 문자가 포함되도록 하는 루프를 만듭니다. 그런 다음 이 코드 줄 [System.Web.Security.Membership]::GeneratePassword(15, 2)
를 사용하여 2개의 특수 문자를 포함한 15자의 무작위 비밀번호를 생성하고 이를 $pwd
변수에 저장합니다.
루프는 생성된 비밀번호에 적어도 하나의 숫자 문자가 포함될 때까지 반복합니다.
출력:
Y4UkK4)G+lannRd
단 몇 줄의 코드로, 위의 출력은 매번 다른 문자열을 생성하고 생성된 문자열에 적어도 하나의 숫자 문자가 포함되도록 보장합니다.
PowerShell에서 무작위 문자열을 생성하는 New-Guid
Cmdlet 사용하기
PowerShell은 무작위 GUID(Globally Unique Identifier)를 생성하기 위해 New-Guid
cmdlet을 제공합니다. 이 GUID를 비밀번호를 포함한 다양한 용도의 무작위 문자열로 사용할 수 있습니다.
다음 예제에서는 [System.Guid]::NewGuid()
를 사용하여 무작위 GUID(Globally Unique Identifier)를 생성한 다음, 생성된 GUID를 문자열 표현으로 변환하고 이를 $randomString
변수에 저장합니다.
예제 코드:
$randomString = [System.Guid]::NewGuid().ToString()
$randomString
출력:
de5881dc-a546-43da-9b89-0bae712406b1
출력은 무작위 문자열을 생성합니다.
PowerShell에서 문자 집합과 함께 Get-Random
Cmdlet을 사용하여 무작위 문자열 생성하기
커스텀 문자 집합을 정의하고 Get-Random
cmdlet을 사용하여 무작위 문자열을 생성할 수도 있습니다. 이 방법은 무작위 문자열에 사용되는 문자 집합에 대한 더 많은 제어를 제공합니다.
다음은 예제입니다.
예제 코드:
$length = 10
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.ToCharArray()
$randomString = -join ($characters | Get-Random -Count $length)
$randomString
먼저, 원하는 무작위 문자열의 길이를 정의하고 이를 변수 $length
에 저장합니다.
그런 다음, 무작위 문자열이 생성될 문자($characters
)를 문자 배열로 정의합니다. .ToCharArray()
메서드는 문자열을 개별 문자의 배열로 변환합니다.
다음으로, 지정된 길이($randomString
)의 문자열을 생성하기 위해 문자 배열에서 무작위로 문자를 선택하고, 선택된 문자는 결합되어 최종 무작위 문자열을 형성합니다. 마지막으로, 생성된 무작위 문자열을 출력합니다.
출력:
9lQSruF40i
출력은 $characters
에서 문자를 선택하여 무작위 문자열을 생성합니다.
결론
이 기사는 PowerShell에서 무작위 문자열을 생성하는 방법의 배열을 제공하여, Active Directory에서 고유 비밀번호 및 기타 작업을 관리하기 위한 적절한 도구를 갖출 수 있도록 합니다.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn