programing

파워셸의 목록에서 마지막 항목 선택

megabox 2023. 10. 26. 20:55
반응형

파워셸의 목록에서 마지막 항목 선택

d에서 z까지 사용 가능한 드라이브 목록을 제공하는 이 코드 라인을 사용하여 드라이브 문자를 매핑하려고 합니다.

ls function:[d-z]: -n | ? { !(test-path $_) }

그럼 목록에서 무작위가 아닌 마지막 편지를 뽑고 싶습니다.제가 그걸 어떻게 해야 하죠?파워셸은 처음입니다. 도와주셔서 감사합니다.

사용가능Select-Object -Last 1그 파이프라인의 끝에.

목록의 맨 뒤에서 시작해서 올라가시면 됩니다.

마지막 항목:$array[-1]두 번째부터 마지막까지:$array[-2]등등.

만약 당신이 훨씬 더 장황하지만 (내 생각에는) 읽을 수 있게 개선된 버전을 찾는다면:

# Get all drives which are used (unavailable)
# Filter for the "Name" property ==> Drive letter
$Drives = (Get-PSDrive -PSProvider FileSystem).Name

# Create an array of D to Z
# Haven't found a more elegant version...
$Letters = [char[]]([char]'D'..[char]'Z')

# Filter out, which $Letters are not in $Drives (<=)
# Again, filter for their letter
$Available = (Compare-Object -ReferenceObject $Letters -DifferenceObject $Drives | Where {$_.SideIndicator -eq "<="}).InputObject

# Get the last letter
$LastLetter = $Available[-1]

시도해 보기:

ls function:[d-z]: -n|?{!(test-path $_)} | Select-Object -Last 1

D-Z의 모든 경로를 시도할 필요가 없는 또 다른 옵션은 파싱하는 것입니다.Get-Psdrive. 예는 다음과 같습니다.

$lettersInUse = Get-Psdrive | ? { $_.Name.Length -eq 1 } | % { $_.Name }
$lastDriveLetter = [Char]'Z'
while ($lettersInUse -contains $lastDriveLetter) {
  $lastDriveLetter = [Char]($lastDriveLetter - 1)
}
$lastDriveLetter
  1. 배열이 있는 경우

    $newArray = @(git tag --list)
    $lastmember = $newArray[$newArray.Count – 1]
    
  2. 목록이 있는 경우

    $newArray | Select-Object -Last 1
    

언급URL : https://stackoverflow.com/questions/18018892/pick-last-item-from-list-in-powershell

반응형