knowledge 英大文字・英小文字・数字をすべて含むパスワードを生成し、それを使用してファイルをZIP化するサンプル

本記事では、「セキュリティ - パスワードの生成」アクションと「圧縮 - 圧縮」アクションを使用して、ファイルをパスワード付きZIPにするサンプルを紹介します。
なお、生成するパスワードは「英大文字・英小文字・数字をすべて含む8文字」を要件と設定します。

【注意】
「セキュリティ - パスワードの生成」アクションを使用すると、ランダムにパスワードを生成することが可能です。
ただし、当該アクションの場合、指定した文字の種類が「選択肢に入る」仕様となっており「必ず入る」ことを保証するものではありません。
そのため、確実にその要件を満たすことを保証するには、IFアクションを使用して正規表現でチェックする必要があります。
(仮に本サンプルと同様のパスワード生成をActive Directory等に使用する際にチェックを行わなかった場合、アカウント作成等の後続処理でパスワードポリシーエラーとなる可能性が考えられます)

本サンプルは、以下の流れになっております。
1. パスワードを生成
2. パスワード文字列を正規表現でチェックし、要件を満たせば次の処理へ。要件を満たさなかった場合は、要件を満たすか99回再試行するまでループする
(本サンプルでは、99回再試行しても要件を満たすパスワードが生成されない、というシナリオは考えないものとします)
3. 圧縮するためのテスト用ファイルをデスクトップに生成
4. 2のチェックを通ったパスワードを使用して3のファイルをZIP化。ZIPファイルの名前は、パスワードと同じに設定する

なお、「2」のチェックロジックで使用している正規表現は以下のような構成になっています。
(?=.*[a-z]) ・・・任意の0文字以上の後ろにa-zのいずれかの文字が登場する(肯定先読み) = 英小文字が存在する文字列
(?=.*[A-Z]) ・・・任意の0文字以上の後ろにA-Zのいずれかの文字が登場する(肯定先読み) = 英大文字が存在する文字列
(?=.*\d) ・・・任意の0文字以上の後ろに0-9のいずれかの文字が登場する(肯定先読み) = 数字が存在する文字列
{8,}     ・・・8文字以上の文字列

以下、サンプルです。

<AMVARIABLE NAME="var_Password" VALUE="" DESCRIPTION="自動生成パスワード" />
<!--大文字・小文字・数字をすべて含む8文字からなるパスワードを生成する-->
<AMSHOWDIALOG MESSAGE="大文字・小文字・数字をすべて含む8文字からなるパスワードを生成します。" COUNTDOWNDELAY="5" />
<AMLOOP FROM="1" TO="100" />
<AMSECURITY RESULTVARIABLE="var_Password" />
<AMIF ACTIVITY="contains_text" TEXT="%var_Password%" SUBSTRING="(?=.*[a-z])(?=.*[A-Z])(?=.*\d){8,}" USERE="YES" />
<AMSHOWDIALOG COUNTDOWNDELAY="3">要件を満たすパスワードです
%var_Password%</AMSHOWDIALOG>
<AMBREAK />
<AMELSE />
<AMSHOWDIALOG COUNTDOWNDELAY="3">要件を満たさないパスワードです
%var_Password%</AMSHOWDIALOG>
<AMIF ACTIVITY="end" />
<AMLOOP ACTIVITY="end" />
<!--Zip化するテスト用ファイルを生成-->
<AMFILESYSTEM ACTIVITY="write_file" FILE="%GetDesktopDirectory()%\AutoMateテスト用ファイル.txt">[%Date()% %Time()%]このファイルは今からパスワード付きZIP化されます</AMFILESYSTEM>
<!--生成してから圧縮するまでが早すぎると解凍時エラーになる場合があるため待機-->
<AMWAIT SCALAR="2" />
<!--パスワードと同じ名前のZIPファイルを作成-->
<AMCOMPRESSION SOURCE="%GetDesktopDirectory()%\AutoMateテスト用ファイル.txt" ARCHIVEFILE="%GetDesktopDirectory()%\%var_Password%.zip" COMPRESSION="2" PASSWORD="AM5gWNPcP8iyCyg2pfeY6XLXO1oxyVTmG9SbTjc/IRu7wU=aME" />
<AMSHOWDIALOG COUNTDOWNDELAY="10">ファイルを圧縮しZIP化しました。
アーカイブファイルは、
%GetDesktopDirectory()%\%var_Password%.zip
です。
解凍パスワードはファイル名(拡張子除く)と同じです。
解凍を確認してください。</AMSHOWDIALOG>