我目前使用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-WMIObject CMDlet从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