Windows-Server-2008-R2

遠端刪除卷影副本

  • July 30, 2013

我目前用於DISKSHADOW從我們的 Hyper-V 伺服器中刪除卷影副本。為此,我必須登錄伺服器但psexec 不起作用。

psexec \\hyper-v-server diskshadow
DISKSHADOW> Error reading from console. Win32 error: 0x6
The handle is invalid.

我認為vssadmin可以執行上述操作,但我想使用 PowerShell 編寫腳本並選擇性地刪除卷影副本。這些工具都沒有在 PowerShell 中提供可用的輸出。

我做了一些研究,但沒有找到任何使用 PowerShell 在本地或遠端查詢快照的方法。我想這樣做將涉及使用Get-WMIObjectCMDlet 從 WMI 查詢相關資訊,但我只能找到Win32_ShadowCopy.Create()方法。

**編輯:**要清楚,我想要的是可以使用 PowerShell 操作的對象。

您可以使用 Get-WMIObject cmdlet 遠端刪除卷影副本。下面的範例展示了它是如何工作的。應該注意的是,在沒有任何遠端卷影副本可用的情況下,Get-WMIObject cmdlet 返回一個空對象。這意味著可能仍需要結合使用 PowerShell 遠端處理和 vssadmin 工具來遠端創建卷影副本。

在目標伺服器上(從提升的命令提示符處),讓我們首先創建一個卷影副本,以便一個可用的:

vssadmin create shadow /for=c:

從管理伺服器:

$shadowCopies = Get-WMIObject -Class Win32_ShadowCopy -Computer <TARGET SERVER NAME>
$shadowCopies | % {$_.DeviceObject}  # Lists out just the names of the copies
$shadowCopies | Get-Member -View All # Lists all members even hidden ones such as "delete"
$shadowCopies[0].Delete()            # Deletes the first shadow copy when more than one exists
$shadowCopies.Delete()               # Works when only a single shadow copy exists

引用自:https://serverfault.com/questions/526222