2013-01-08 8 views
15

Windows 7のWindows Power Shellを使用してボリュームシャドウコピーのスナップショットを作成してアクセスしようとしています。これまでのsuperuser questionpowershellからボリュームシャドウコピー(VSS)スナップショットにアクセスする

で以下を使用してスナップショットを作成できました。
(Get-WmiObject -list win32_shadowcopy).create("C:\","ClientAccessible") 

私はそれはWMIを使用して、ドライブ文字にマッピングすることができるように「露出」し、シャドウコピーを設定することが可能であることを示す任意のドキュメントを見つけることができません。同じ質問でリンクされたarticleは、スナップショットにアクセスするためにジャンクションを使用するハックを示しています。

PS C:\Windows\system32> ls '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14' 
Get-ChildItem : Paths that begin with \\?\GlobalRoot are internal to the kernel and should not be opened by managed applications. 
At line:1 char:3 
+ ls <<<< '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14' 
    + CategoryInfo   : NotSpecified: (:) [Get-ChildItem], ArgumentException 
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.GetChildItemCommand 

私はからVSSスナップショットにアクセスすることができます方法:スナップショットにアクセスしようとすると、

PS C:\Windows\system32> ls C:\shadowcopy 
Get-ChildItem : The parameter is incorrect. 

At line:1 char:3 
+ ls <<<< C:\shadowcopy 
    + CategoryInfo   : ReadError: (C:\shadowcopy:String) [Get-ChildItem], IOException 
    + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand 

は、直接、次の与える:私はシンボリックリンクにアクセスしようとすると

、私は次の取得しますパワーシェルスクリプト?

答えて

23

どのようにシンボリックリンクを作成しましたか?その記事で概説したように、あなたは末尾のバックスラッシュでデバイスパスを指定する必要があります。

$s1 = (Get-WmiObject -List Win32_ShadowCopy).Create("C:\", "ClientAccessible") 
$s2 = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $s1.ShadowID } 

$d = $s2.DeviceObject + "\" # <-- this here 

cmd /c mklink /d C:\shadowcopy "$d" 

はこの後、私はうまくC:\shadowcopyに装着されたシャドウコピーにアクセスすることができました。

@KeyszerSがコメント内で指摘しているように、シャドウコピーのコールをアンマウントするには$s2.Delete()としてください。

+3

末尾の「\」は、私が逃した重要な部分でした。 – jordanm

+5

将来の読者のために、シャドウコピーを削除する方法は次のとおりです:vssadmin delete shadows/Shadow = "" $($ s2.ID.ToLower()) ""/Quiet "| iex'を実行してから 'Remove-Item c:\ shadowcopy -Confirm:$ false -Force'を実行します。このコードは、シャドウコピーを処理した後に配置してください。 –

+0

魔法のように動作します。 –

関連する問題