rsyncを使用してWindowsコンピュータをバックアップするためのPowerShellスクリプトを作成中です。この目的のために、私は上記のスクリプトからWMIを使用して、作者が参加する非永続シャドウコピーを作成しようとしています(バックアップには明らかに推奨されています)。PowerShellの "バックアップ"コンテキストを使用したシャドウコピーの作成
一般的にシャドウコピーを作成する方法を別の質問(Accessing Volume Shadow Copy (VSS) Snapshots from powershell)から見つけましたが、ここで与えられた例では、コンテキストパラメータとして "ClientAccessible"を使用しています。その結果、ライターなしで永続シャドウコピーが作成されます参加。
Get-WmiObject win32_shadowcontext | Out-GridView
これは、リストはコンテキストが命名したん」:ソリューションを探している間
、私はWMIによって理解されていると仮定したコンテキストのリストを取得するには、次のコマンドを使用することができることを発見しましたバックアップ "、これは便利な私が望むものです。によると
ReturnValue : 5
ShadowID : {00000000-0000-0000-0000-000000000000}
に設定されている
$shadow = (Get-WmiObject -list win32_shadowcopy).Create("C:\", "Backup")
はしかし、これが失敗するように見えると$シャドウ変数の内容:私は、そのコンテキストを使用して、非永続的なシャドウコピーを作成しようとすることを進ん関連ドキュメント(Create method of the Win32_ShadowCopy class)、戻り値は「サポートされていないシャドウコピーコンテキスト」を意味します。
なぜこのコンテキストがサポートされていないのか、まったく使用できないのか関連文書が見つかりませんでした。私は "FileShareBackup"と "AppRollback"コンテキストも成功させずに試してみました。
シャドウコピーを作成するときに何らかの理由でWMIが "clientAccessible"以外のものを本当にサポートしていないとか、OSに依存していると思います(Windows 7でこれをテストしています)。 、64-bit)
これを動作させるにはどうすればよいですか?
私は同じことを自分で書いています(しかし、C#とライブラリAlphaVSSで書かれています)。これは私が学んだことです:スナップショットをマウントしてファイルを同期させてマウントできるようにする必要がありますスナップショットは 'NoAutoRelease'フラグが' true'にセットされていなければなりません。また、 'NoAutoRelease'をtrueに設定するには、' Persistent'を 'true'に設定する必要があります。そうすれば、' ClientAccessable'が動作するのに余計な時間を費やすことがなくなります。両方の変数が「true」に設定されている) –
NoAutoReleaseをFalseに設定して作成されたシャドウコピーは、要求したプロセスが終了すると自動的に削除されます([リンク](http://msdn.microsoft.com/en-us/library/windows/desktop) /aa394427(v=vs.85).aspx))。もともと私はそれが私が見ていた問題だと疑っていましたが、私がAppRollbackの文脈と同じ問題を抱えているという事実は、そうでないかもしれないことを示唆しています。しかし一般に、[リンク](http://www.goodjobsucking.com/?p=62)で説明されているように、自動リリースシャドウコピーをマウントすることは可能です。しかし、私はそこで提案されている解決策よりもPowerShellを使う方が好きです。 –
WMIを動作させることができない場合は、[AlphaVSSアセンブリ](http://alphavss.codeplex.com/)をPowershellにロードしてみてください。 [スナップショットの作成方法、マウント方法、C#での削除方法はこちら](http://pastebin.com/XhVLyq0m)、PowerShellにそのスナップショットを翻訳できるはずです。 –