2013-01-08 19 views
15

Tôi đang cố gắng tạo và truy cập ảnh chụp Sao lưu Volume Shadow bằng Windows Power Shell trong Windows 7. Tôi thấy rằng tôi có thể tạo ảnh chụp nhanh bằng cách sử dụng thông qua superuser question:Truy cập ảnh chụp nhanh Sao chép Volume Shadow (VSS) từ PowerShell

trước
(Get-WmiObject -list win32_shadowcopy).create("C:\","ClientAccessible") 

Tôi không thể tìm thấy bất kỳ tài liệu nào cho biết có thể đặt bản sao bóng thành "Đã phơi sáng" để nó có thể được ánh xạ tới ký tự ổ đĩa bằng cách sử dụng WMI. An article được liên kết trong cùng một câu hỏi hiển thị lỗi bằng cách sử dụng đường giao nhau để truy cập ảnh chụp nhanh.

Khi tôi cố gắng để truy cập vào liên kết tượng trưng, ​​tôi nhận được như sau:

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 

Cố gắng truy cập vào các ảnh chụp trực tiếp cho những điều sau đây:

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 

Làm thế nào tôi có thể truy cập vào một VSS snapshot từ PowerShell script?

Trả lời

23

Bạn đã tạo liên kết tượng trưng bằng cách nào? Như đã nêu trong bài viết đó, bạn phải chỉ định đường dẫn thiết bị với dấu gạch chéo ngược:

$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" 

Sau này, tôi đã có thể truy cập các bản sao bóng gắn kết với C:\shadowcopy tốt.

Để ngắt kết nối cuộc gọi sao chép bóng $s2.Delete(), như @KeyszerS đã chỉ ra trong các nhận xét.

+3

Dấu "\" là phần quan trọng mà tôi bỏ qua. – jordanm

+5

Đối với người đọc trong tương lai, dưới đây là cách xóa bản sao bóng: "" vssadmin xóa bóng/Shadow = "" $ ($ s2.ID.ToLower()) ""/Yên tĩnh "| iex' rồi 'Remove-Item c: \ shadowcopy -Xác nhận: $ false -Force'. Đặt mã này sau khi bạn làm việc với bản sao bóng. –

+0

Làm việc như một phép thuật. –

Các vấn đề liên quan