Sen bir arada kullanabilir pwd, Join-Pathve [System.IO.Path]::GetFullPathbir tam genişletilmiş yol alır.
Yana cd( Set-Location) basitçe PowerShell bağlamda anlamak olmayan bir .NET API göreceli bir dosya adı geçen süreç Geçerli çalışma dizini değişmez böyle başlangıç çalışma dışı esaslı bir yola çözülmesi gibi istenmeyen yan etkileri olabilir dizin (mevcut konumunuz değil).
Yaptığınız şey, önce yolunuzu nitelemek:
Join-Path (Join-Path (pwd) fred\frog)
Bu, (mevcut konumum göz önüne alındığında):
C:\WINDOWS\system32\fred\frog\..\frag
Mutlak bir temel ile, .NET API'yi çağırmak güvenlidir GetFullPath:
[System.IO.Path]::GetFullPath((Join-Path (Join-Path (pwd) fred\frog) '..\frag'))
Bu size tam nitelikli yolu ve ..kaldırılmış yolu verir :
C:\WINDOWS\system32\fred\frag
Kişisel olarak da karmaşık değil, bunun için harici komut dosyalarına bağlı çözümleri küçümsüyorum, basit bir problem tarafından oldukça uygun bir şekilde çözüldü Join-Pathve pwd( GetFullPathsadece güzelleştirmek için). Sadece göreceli kısmı korumak istiyorsanız , sadece ekleyin .Substring((pwd).Path.Trim('\').Length + 1)ve tamamlayın!
fred\frag
GÜNCELLEME
En C:\uç durumu işaret ettiği için @Dangph'a teşekkürler .