Skip to main content
OnCommand Workflow Automation 5.1
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

PowerShell 명령을 Perl으로 변환할 때의 고려 사항

기여자

PowerShell 및 Perl의 기능은 다르므로 PowerShell 명령을 Perl으로 변환할 때 고려해야 할 중요한 사항에 대해 알고 있어야 합니다.

명령 입력 유형

WFA(OnCommand Workflow Automation)를 사용하면 워크플로우 설계자가 명령을 정의할 때 명령에 대한 입력으로 어레이 및 해시를 사용할 수 있습니다. 이 입력 유형은 명령이 Perl을 사용하여 정의된 경우 사용할 수 없습니다. Perl 명령이 배열 및 해시 입력을 허용하도록 하려면 디자이너에서 입력을 문자열로 정의할 수 있습니다. 그런 다음 명령 정의를 통해 입력을 구문 분석할 수 있습니다. 이 입력은 필요에 따라 배열 또는 해시를 만들기 위해 전달됩니다. 입력에 대한 설명은 입력이 필요한 형식을 설명합니다.

my @input_as_array  = split(',', $InputString); #Parse the input string of format val1,val2 into an array

my %input_as_hash = split /[;=]/, $InputString; #Parse the input string of format key1=val1;key2=val2 into a hash.

PowerShell 명령문

다음 예에서는 스토리지 입력을 PowerShell 및 Perl로 전달하는 방법을 보여 줍니다. 이 예에서는 Cron 작업이 실행되도록 예약된 월을 지정하는 CronMonth 입력을 설명합니다. 유효한 값은 -1에서 11 사이의 정수입니다. 값이 -1이면 스케줄이 매달 실행됨을 나타냅니다. 다른 값은 특정 월을 나타내며 0은 1월, 11은 12월입니다.

[parameter(Mandatory=$false, HelpMessage="Months in which the schedule executes. This is a comma separated list of values from 0 through 11. Value -1 means all months.")]
  [ValidateRange(-1, 11)]
  [array]$CronMonths,

Perl 진술

GetOptions(
    "Cluster=s"         => \$Cluster,
    "ScheduleName=s"    => \$ScheduleName,
    "Type=s"            => \$Type,
    "CronMonths=s"      => \$CronMonths,
) or die 'Illegal command parameters\n';

sub get_cron_months {
    return get_cron_input_hash('CronMonths', $CronMonths, 'cron-month', -1,
        11);
}

sub get_cron_input_hash {
    my $input_name   = shift;
    my $input_value  = shift;
    my $zapi_element = shift;
    my $low          = shift;
    my $high         = shift;
    my $exclude      = shift;

    if (!defined $input_value) {
        return undef;
    }

    my @values = split(',', $input_value);

    foreach my $val (@values) {
        if ($val !~ /^[+-]?\d+$/) {
            die
                "Invalid value '$input_value' for $input_name: $val must be an integer.\n";
        }
        if ($val < $low || $val > $high) {
            die
                "Invalid value '$input_value' for $input_name: $val must be from $low to $high.\n";
        }
        if (defined $exclude && $val == $exclude) {
            die
                "Invalid value '$input_value' for $input_name: $val is not valid.\n";
        }
    }
    # do something
}

명령 정의

PowerShell에서 파이프 연산자를 사용하는 한 줄 식은 동일한 기능을 구현하기 위해 Perl의 여러 문 블록으로 확장해야 할 수도 있습니다. 다음 표에는 대기 명령 중 하나의 예가 나와 있습니다.

PowerShell 명령문 Perl 진술
# Get the latest job which moves the specified volume to the specified
 aggregate.
$job = Get-NcJob -Query $query

where {$_.JobDescription -eq "Split" + $VolumeCloneName}

Select-Object -First 1 ----

my $result = $server->job_get_iter(
	'query' => {'job-type' => 'VOL_CLONE_SPLIT'},
	'desired-attributes' => {
		'job-type' => '',
		'job-description' => '',
		'job-progress' => '',
		'job-state' => ''
	}
);
my @jobarray;
for my $job (@{ $result->{'attributes-list'}})
{
	my $description = $job->{'job-description'};
	if($description =~ /$VolumeCloneName/)
	{
		push(@jobarray, $job)
	}
}