따라서 변수에 저장된 디렉토리가 있으면 다음과 같이 말하십시오.
$scriptPath = (Get-ScriptDirectory);
이제 두 부모 수준 의 디렉토리를 찾고 싶습니다 .
좋은 방법이 필요합니다.
$parentPath = Split-Path -parent $scriptPath
$rootPath = Split-Path -parent $parentPath
한 줄의 코드로 rootPath에 액세스 할 수 있습니까?
답변:
get-item
당신의 친절한 도움의 손길입니다.
(get-item $scriptPath ).parent.parent
문자열 만 원하는 경우
(get-item $scriptPath ).parent.parent.FullName
$scriptPath
파일을 가리키는 경우 Directory
먼저 속성 을 호출해야 하므로 호출은 다음과 같습니다.
(get-item $scriptPath).Directory.Parent.Parent.FullName
주의
이것은 $scriptPath
존재하는 경우에만 작동 합니다. 그렇지 않으면 Split-Path
cmdlet 을 사용해야 합니다.
.parent
디렉터리 개체에서만 작동합니다. 나는 파일의 경로를 가지고, 내가 파일에있는 디렉토리의 부모를 찾으려면, 내가 사용해야(get-item $PathToFile ).Directory.parent
$scriptPath
존재하는 경우에만 작동 합니다. 그렇지 않으면 Split-Path $scriptPath -parent
.
다음과 같이 해결했습니다.
$RootPath = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent
$RootPath = Split-Path (Split-Path $PSScriptRoot)
-Parent
의 기본 위치 분할 매개 변수 이므로 작동 합니다.Split-Path
백 슬래시에서 분할하고 음의 배열 인덱싱을 사용하여 마지막 순서를 가져와 조부모 디렉토리 이름 만 얻을 수 있습니다.
($scriptpath -split '\\')[-2]
정규식에서 이스케이프하려면 백 슬래시를 두 배로 늘려야합니다.
전체 경로를 얻으려면 :
($path -split '\\')[0..(($path -split '\\').count -2)] -join '\'
그리고 split-path의 매개 변수를 보면 경로를 파이프 라인 입력으로 사용하므로 다음과 같습니다.
$rootpath = $scriptpath | split-path -parent | split-path -parent
당신이 사용할 수있는
(get-item $scriptPath).Directoryname
문자열 경로를 가져 오거나 디렉토리 유형을 사용하려면 다음을 사용하십시오.
(get-item $scriptPath).Directory
다른 답변을 약간 외삽하려면 (가능한 한 초보자에게 친숙한 방식으로) :
GetType 메서드로 개체 유형을 확인하여 작업중인 항목을 확인하십시오. $scriptPath.GetType()
마지막으로, 한 줄로 만드는 데 도움이되는 빠른 팁 : Get-Item에는 gi
별칭이 있고 Get-ChildItem에는 gci
별칭이 있습니다.