programing

선택적 통화 변수로 함수 만들기

bestprogram 2023. 9. 9. 09:48

선택적 통화 변수로 함수 만들기

PowerShell 기능에서 파라미터를 호출하여 고려해야 하는 파라미터를 생성하는 방법이 있습니까?

commandlet에 의해 주어진 예(내가 하고 싶은 것을 대담하게 하는 것):

Invoke-Command -computername Server01 -Scriptblock {...}

여기 기능을 사용하여 수행하고자 하는 작업의 예가 있습니다.

Function DoStuff($computername, -arg2, -domain $domain)
    Test-parameter(-domain) if (-domain -eq $true) {
        use $domain
    }
    Else {
        $domain = "Domain1"
    }
    test-parameter($arg2) {
        if ($arg2 -eq $true) {
            Do something
        }
        else {
            Do the opposite
        }
    }

요약하면 다음과 같습니다.

"-arg2"가 있으면 대본에 무슨 일이 생겼으면 좋겠어요.만약 "-Domain"이 존재하고 그것과 논쟁이 있다면, 나는 set 인수가 아닌 그것을 사용하기를 원합니다.

파워셸은 필수 매개변수, 옵션 매개변수, "스위치"(일명 플래그) 매개변수 및 "매개변수 집합"을 포함한 일반적인 매개변수 시나리오에 대한 많은 내장 지원을 제공합니다.

기본적으로 모든 매개변수는 선택사항입니다.가장 기본적인 접근법은 각각의 정보를 단순히 확인하는 것입니다.$null, 그리고 거기서 원하는 논리를 실행합니다.이것은 기본적으로 당신이 샘플 코드에서 이미 보여준 것입니다.

Powershell에서 제공하는 모든 특별 지원에 대해 알아보려면 다음 링크를 확인하십시오.

about_Functions

정보_기능_고급

정보_함수_고급_파라미터

질문이 명확하지 않다고 생각합니다. 이 코드는 -domain 매개 변수를 포함할 경우 항상 '이름'(즉, doSUFF computername arg2-domain domain)이라고 가정합니다. 이것은 또한 computername 매개 변수를 필수로 만듭니다.

Function DoStuff(){
    param(
        [Parameter(Mandatory=$true)][string]$computername,
        [Parameter(Mandatory=$false)][string]$arg2,
        [Parameter(Mandatory=$false)][string]$domain
    )
    if(!($domain)){
        $domain = 'domain1'
    }
    write-host $domain
    if($arg2){
        write-host "arg2 present... executing script block"
    }
    else{
        write-host "arg2 missing... exiting or whatever"
    }
}

질문을 제대로 이해했는지 잘 모르겠습니다.

만약 null일 경우 도메인에 값을 할당할 수 있고 $args2가 공급되고 값에 따라 특정 코드를 실행할 수 있다면 무엇을 확인할 수 있기를 원하십니까?

위의 가정을 재조립하기 위해 코드를 변경했습니다.

Function DoStuff($computername, $arg2, $domain)
{
    if($domain -ne $null)
    {
        $domain = "Domain1"
    }

    if($arg2 -eq $null)
    {
    }
    else
    {
    }
}

DoStuff -computername "Test" -arg2 "" -domain "Domain2"
DoStuff -computername "Test" -arg2 "Test"  -domain ""
DoStuff -computername "Test" -domain "Domain2"
DoStuff -computername "Test" -arg2 "Domain2"

도움이 됐습니까?

언급URL : https://stackoverflow.com/questions/13687550/create-a-function-with-optional-call-variables