在 vb.net 我需要创建一个卷影副本,尝试使用 power shell

In vb.net I need to create a shadow copy, trying to use power shell

我有一个 VB.net 备份程序。我需要创建一个卷影副本,看起来最简单的方法就是使用 power shell 来创建它。如果我打开命令提示符并打开电源 shell 并输入: (Get-WmiObject -list win32_shadowcopy).Create("C:\","ClientAccessible") 它工作得很好。但我想将其添加到 process.start 或 shell 并且似乎无法找出正确的上下文。我在网上找到了下面的例子,但是它给我错误。

powershell invoke-command -scr {(Get-WmiObject -list win32_shadowcopy).Create("C:\","ClientAccessible")}

字符串开始: 在 line:1 char:70 + invoke-command -scr {(Get-WmiObject -list win32_shadowcopy).Create(C: <<<< ", 客户端可访问)} 缺少终止符:“。 在 line:1 char:90 + 调用命令 -scr {(Get-WmiObject -list win32_shadowcopy).Create(C:",Client 无障碍)} <<<< + CategoryInfo : ParserError: (,ClientAccessible)}:String) [], Pa rentContainsErrorRecordException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

知道为什么我使用 power shell 时会出现此错误吗?我也对使用 VB.net 创建阴影的其他解决方案持开放态度,只要它很简单即可。注意:必须在 Vista 到 8.1

中工作

因为没有回应,我研究了其他方法,在 vbscript 中找到了这个,所以我将它转换为 vb.net。确保将其设置为在 vs2010 中编译为任何 cpu。

   Const VOLUME = "C:\"
    Const CONTEXT = "ClientAccessible"

    Dim strShadowID
    Dim objWMIService = GetObject("winmgmts:\.\root\cimv2")
    Dim objShadowStorage = objWMIService.Get("Win32_ShadowCopy")
    Dim errResult = objShadowStorage.Create(VOLUME, CONTEXT, strShadowID)

    If errResult = 0 Then
        Dim objWMI = GetObject("winmgmts://./root\cimv2")
        Dim objInstances = objWMI.InstancesOf("Win32_ShadowCopy")

        For Each objInstance In objInstances
            With objInstance
                If .ID = strShadowID Then
                    Console.WriteLine(.DeviceObject)
                End If
            End With
            On Error GoTo 0
        Next
    End If