programing

사용자 지정 파워셸 함수 목록을 가져오는 방법은?

javamemo 2023. 9. 17. 12:02
반응형

사용자 지정 파워셸 함수 목록을 가져오는 방법은?

저는 제 삶을 편하게 해주기 위해 맞춤형 파워쉘 기능을 사용합니다.

예:

# custom function
> function build {cmd /c build.ps1}

# invoke the function
> build

이것은 빌드 스크립트를 빠르게 실행할 수 있게 해줍니다.
안타깝게도 제가 만든 사용자 지정 기능을 모두 잊어버리기 쉽습니다.

사용자 지정 기능 목록을 덤프하기 위해 실행할 수 있는 cmdlet이 있습니까?그 다음에, 그 기능들이 무엇인지 알게 되면, 더 이상 필요하지 않은 기능들을 삭제하기 위해 실행할 수 있는 cmdlet이 있습니까?

사용 가능한 기능 목록을 가져오려면 다음과 같이 하십시오.

> Get-ChildItem function:\

파워셸 함수를 제거하려면 다음과 같이 하십시오.

# removes `someFunction`
> Remove-Item function:\someFunction

프로필에 추가:

$sysfunctions = gci function:
function myfunctions {gci function: | where {$sysfunctions -notcontains $_} }

제 기능은 세션이 시작된 이후 생성된 기능만 나열됩니다.

어떤 이유에서인지 전화를 걸었을 때 프로필에 나와 있는 사용자 지정 기능이 보이지 않아 답변이 마음에 들지 않았습니다.Get-ChildItem function:제가 만든 것은 이렇습니다

Function Get-MyCommands {
    Get-Content -Path $profile | Select-String -Pattern "^function.+" | ForEach-Object {
        # Find function names that contains letters, numbers and dashes
        [Regex]::Matches($_, "^function ([a-z0-9.-]+)","IgnoreCase").Groups[1].Value
    } | Where-Object { $_ -ine "prompt" } | Sort-Object
}

당신을 위한 한가지 해결책은 당신의 모든 기능을 psm1 파일에 넣고 모듈을 만드는 것입니다.그렇게 하면 모듈을 가져올 수 있고 모든 명령을 멋진 모듈에 넣을 수 있습니다.

사용가능

dir function:

혹은 그것을 치우기 위해.

dir function: | where {$_.source -ne [string]::Empty} | sort source

아마 제가 좀 늦은 것 같습니다.하지만 다른 답변들을 병합해서 결과를 필터링할 수 있는 작은 루틴을 설정했습니다.Get-ChildItem function:끈끈하게 논하며제가 이걸 쓰는 이유는 항상 제 프로필에 포함된 기능과 별칭을 잊어버리는 경향이 있기 때문입니다.누군가가 도움이 된다고 생각할 수도 있습니다.

function fsearch {
    param([string[]] $str)
    $allfs = Get-ChildItem function: | foreach { $_.Name }
    echo "Functions"
    echo "---------"
    echo $allfs | where {$_ -match $str}
    $allalias = Get-Alias | foreach { $_.Name }
    echo ""
    echo "Aliases"
    echo "-------"
    echo $allalias | where {$_ -match $str}
}

언급URL : https://stackoverflow.com/questions/15694338/how-to-get-a-list-of-custom-powershell-functions

반응형