したがって、変数にディレクトリが保存されている場合、次のように言います。
$scriptPath = (Get-ScriptDirectory);
今、ディレクトリを見つけたいと思いますtwo親レベルアップ。
素敵な方法が必要です:
$parentPath = Split-Path -parent $scriptPath
$rootPath = Split-Path -parent $parentPath
1行のコードで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
コマンドレットを使用する必要があります。
私はこれを次のように解決しました:
$RootPath = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent
バックスラッシュで分割し、負の配列インデックスを使用して最後から2番目のものを取得して、祖父母のディレクトリ名だけを取得できます。
($scriptpath -split '\\')[-2]
正規表現でエスケープするには、バックスラッシュを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
PowerShell 3では、$PsScriptRoot
または2人の親の質問に対して、
$dir = ls "$PsScriptRoot\..\.."
必要な数のsplit-path
を単純にチェーンできます。
$rootPath = $scriptPath | split-path | split-path
Split-Path -Path (Get-Location).Path -Parent
$ PSScriptRootを使用する場合は、次のことができます
Join-Path -Path $PSScriptRoot -ChildPath ..\.. -Resolve