Portanto, se eu tiver um diretório armazenado em uma variável, diga:
$scriptPath = (Get-ScriptDirectory);
Agora eu gostaria de encontrar o diretório dois níveis pai acima.
Eu preciso de uma boa maneira de fazer:
$parentPath = Split-Path -parent $scriptPath
$rootPath = Split-Path -parent $parentPath
Posso chegar ao rootPath em uma linha de código?
powershell
scripting
Mark Kadlec
fonte
fonte
.parent
só funciona em objetos de diretório. Se eu tiver um caminho para um arquivo e quiser encontrar o pai do diretório em que o arquivo está, preciso usar(get-item $PathToFile ).Directory.parent
$scriptPath
existe. Caso contrário, basta usarSplit-Path $scriptPath -parent
.Eu resolvi isso assim:
fonte
$RootPath = Split-Path (Split-Path $PSScriptRoot)
também funciona, pois-Parent
é o parâmetro de divisão de local padrão paraSplit-Path
Você pode dividi-lo nas barras invertidas e pegar o penúltimo com indexação de array negativa para obter apenas o nome do diretório dos avós.
Você precisa dobrar a barra invertida para escapar dela na regex.
Para obter o caminho completo:
E, observando os parâmetros do caminho dividido, ele usa o caminho como entrada do pipeline, então:
fonte
Você pode usar
para obter o caminho da string ou se desejar o tipo de diretório, use:
fonte
No PowerShell 3,
$PsScriptRoot
ou para sua pergunta de dois pais,fonte
Você pode simplesmente encadear quantos
split-path
precisar:fonte
fonte
Para extrapolar um pouco as outras respostas (da forma mais amigável possível para iniciantes):
Verifique o tipo de objeto com o método GetType para ver com o que você está trabalhando:
$scriptPath.GetType()
Por último, uma dica rápida que ajuda a criar frases simples: Get-Item tem o
gi
alias e Get-ChildItem ogci
alias.fonte
Se você quiser usar $ PSScriptRoot, você pode fazer
fonte
No PowerShell:
fonte