programing

실행 중인 PowerShell 스크립트의 모든 환경 변수 표시

powerit 2023. 4. 23. 11:35
반응형

실행 중인 PowerShell 스크립트의 모든 환경 변수 표시

실행 시 PowerShell 스크립트에 구성된 모든 환경 변수를 표시해야 합니다.일반적으로 환경변수를 표시할 때 셸에서 다음 중 하나를 사용할 수 있습니다(다른 기술 중 하나지만, 이것들은 간단합니다).

gci env:*
ls Env:

다만, 다른 프로그램에서 스크립트를 호출하고 있습니다.이 스크립트에서 위의 콜 중 하나를 사용하면 환경변수와 그 값이 표시되지 않고 대신 다음 리스트가 표시됩니다.System.Collections.DictionaryEntry변수 및 변수 값 대신 유형을 지정합니다.PowerShell 스크립트 내에서 모든 환경 변수를 표시하려면 어떻게 해야 합니까?

단축판:

gci env:* | sort-object name

그러면 이름과 값이 모두 표시됩니다.

최단 버전(이름별로 정렬된 변수 포함):

gci env:

나는 마침내 사전의 각 항목을 반복하여 해결책을 찾아냈다.

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String

와일드카드 필터가 있는 쇼트버전:

gci env: | where name -like 'Pro*'

제공된 답변 중 어떤 것도 질문과 관련이 없다고 생각합니다.OP는 실제 변수 이름 및 값이 아닌 개체 유형 목록(각 구성원에 대해 동일)을 가져옵니다.다음은 당신이 원하는 것입니다.

gci env:* | select Name,Value

줄임말:

Get-ChildItem Env:* | Select-Object -Property Name,Value

이 명령어는 다음 명령어도 동작합니다.

dir env:

Powershell에서 모든 환경변수를 취득하는 방법에는 여러 가지가 있습니다.

 [System.Environment]::GetEnvironmentVariables()
 or
 dir env:

이름으로 환경 변수를 가져오려면 다음과 같이 하십시오.

[System.Environment]::GetEnvironmentVariable("USERNAME")
 $env:USERNAME

dr;dr

환경변수 이름-값 쌍을 알기 쉬운 문자열로 표현하려고 했으므로 다음과 같이 하십시오.

gci env: | oss

oss를 위한 내장 래퍼 기능입니다.Out-String -Stream따라서 각 이름과 값의 쌍을 자체 문자열로 반환합니다.파이프 접속처Out-String(없음)-Stream단일 다중 행 문자열을 가져오려면 (항상 예기치 않게 줄바꿈이 있는 문자열이 있어야 합니다.- GitHub 문제 #14444 참조).


PowerShell의 모든 환경변수의 이름과 값[1]이름별로 정렬하여 나열하려면 의 콘텐츠(하위 항목)를 나열합니다.env: cmdlet을 사용하는 PowerShell 드라이브(내장 에일리어스:gci):

# 'gci' is a built-in alias of the 'Get-ChildItem' cmdlet.
# Avoid alias 'ls', because on Unix-like platforms 
# it isn't defined and instead refers to the standard utility of that name.
# The output is implicitly *sorted by variable name*.
gci env:

# Use *wildcards* to list variables by *name pattern*; e.g, all whose
# name starts with "home"
gci env:home*

출력은 오브젝트, 즉 각 변수이름과 값 쌍으로 기술하는 인스턴스입니다..Key(.Name)와.Value특성.PowerShell의 디스플레이용 포맷 시스템은 자동으로 2열 형식으로 렌더링합니다.

  • 환경 변수 이름만 나열하려면:

    gci env: -Name
    
    # Alternative, using property access:
    (gci env:).Name
    
  • 특정 환경변수 값을 가져옵니다(예:USERNAME, 이름 공간 변수 표기법을 사용하는 것이 가장 쉽습니다.

    # Output the value of environment variable "USERNAME"
    $env:USERNAME
    
    # Alternative, using gc (alias of Get-Content)
    # Needed if the name is stored in a variable.
    gc env:USERNAME
    

이러한 오브젝트를 (잠재적으로 암시)로 문자열화하면 다음과 같습니다.

  • Windows PowerShell에서는 유형 이름(예: 글자 그대로)으로 문자열화됩니다.'System.Collections.DictionaryEntry'

  • PowerShell (Core) 7에서는 다음과 같이 보다 의미 있게 문자열화됩니다.'[<name>, <value>]'

  • 을)로 %는 cmdlet의 삽입 에일리어스입니다).

    gci env: | % tostring
    
    # Ditto with Write-Host, which also uses .ToString() stringification
    gci env: | Write-Host
    

디스플레이에 인쇄되는 대로 문자열지정할 경우 편리한 2열 형식을 사용하여 cmdlet을 사용합니다.

# Outputs *friendly* string representations
gci env: | oss # 'oss' is a built-in wrapper function for 'Out-String -Stream'

" " 를 사용하는 : " " " 를 사용합니다.Out-String 없이-Stream출력으로서 1 행의 복수 행의 문자열이 표시됩니다만, 그 문자열에는 후행의 새로운 [2]행이 붙어 있는 것에 주의해 주세요.


[1] 을 사용하는 것에 해 주세요.Get-ChildItemgcienv:* 문자, 「」* env:- 모든 변수를 가져올 필요가 없을 뿐만 아니라 출력도 정렬되지 않습니다.

[2] GitHub호 #14444에서 논의된 바와 같이, 반드시 후행 뉴라인이 추가되는 것은 문제가 있다.

긴 환경 변수 값은 기본적으로 잘립니다.

이는 환경변수의 정렬된 목록을 전체 값으로 빠르게 가져올 수 있는 한 가지 방법입니다.

Get-ChildItem env:* | Sort-Object Name | Format-List

PowerShell Core(6 이상)를 사용하는 경우(pwsh: https://github.com/PowerShell/PowerShell), 를 사용할 수도 있습니다.ls env:

언급URL : https://stackoverflow.com/questions/39800481/display-all-environment-variables-from-a-running-powershell-script

반응형