6

フォルダーがジャンクション ポイントであるかどうかを PowerShell コードでテストするにはどうすればよいですか?

4

6 に答える 6

6

If (Get-Item Test Folder ).Attributes.ToString().Contains("ReparsePoint"){コード}

于 2013-07-24T13:56:36.120 に答える
5

このブログをご覧ください: https ://web.archive.org/web/20190422210654/https://devblogs.microsoft.com/powershell/viewing-junctions-with-dir/

これを行う方法は、組み込みのファイルシステムフォーマットファイルをコピーし、ジャンクションが示されるように変更してから、Update-FormatDataを使用してロードすることです。

ブログから:

ファイルシステムのフォーマット規則はにあり$pshome\FileSystem.Format.ps1xmlます。これをコピーしてから、要素 で「Mode」の値を持つPropertyName[ViewDefinitions –> View –> TableControl –> TableRowEntries –> TableRowEntry –> TableColumnItems –> TableColumnItem] のコンテンツを次のように変更しました。

<ScriptBlock> 
   "$($_.Mode)$(if($_.Attributes -band [IO.FileAttributes]::ReparsePoint)
{'J'})" </ScriptBlock> 

これは、DirectoryInfoオブジェクトのAttributesプロパティ($_.Attributes)で.NetSystem.IO.FileAttributes.ReparsePoint 列挙値に対してビット単位のANDを実行します。結果がゼロでない場合は、他のファイルモード属性の横に「J」が表示されます。次に、次のように新しいフォーマットファイルをロードします。

 PS> Update-FormatData -PrependPath myFilesystem.format.ps1xml

PrependPathパラメーターは、新しいフォーマットファイルが組み込みのフォーマットファイルの前にロードされることを保証します

ディレクトリリンクのモード列に「J」があり、機能しているようです。

ジャンクションのモード列Jにあります。

于 2010-02-22T13:34:00.413 に答える
1

参考までに、 PowerShell Community Extensionsを実行している場合、この情報は Get-ChildItem の出力で出力 (およびメモ プロパティ) として利用できます。

21> gci .\Roaming\Microsoft\eHome


    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Users...


Mode           LastWriteTime       Length Name
----           -------------       ------ ----
d----     2/15/2010 12:18 AM        <DIR> DvdCoverCache
d----      8/9/2009  1:10 AM    <SYMLINK> DvdInfoCache [\...
d----      8/8/2009 11:51 PM        <DIR> DvdInfoCache.orig
d----    10/22/2009  7:12 PM        <DIR> mcl_images

ただし、プログラムによるアクセスの場合、他のポスターが示唆するように、Attributes プロパティを介して情報にアクセスします。

于 2010-02-22T15:20:12.050 に答える
0

ジャンクションを使用している場合に推奨する PowerShell Community Extensions がある場合は、次の手順を実行して、フォルダーがジャンクションであるかどうかを判断できます。

Import-Module pscx
if ((Get-Item *test_folder*).ReparsePoint){
    Write-Host "YES"
}
于 2011-06-23T14:35:17.277 に答える