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 비트)
어떻게 작동합니까?
나는 C#과 AlphaVSS 라이브러리와 함께 똑같은 것을 썼다. 내가 배운 것은 여기있다 : 파일을 동기화하기 위해 스냅 샷을 마운트해야하지만 마운트 할 수 있어야한다. 스냅 샷은'NoAutoRelease' 플래그가'true'로 설정되어야합니다. 또한'NoAutoRelease'를 true로 설정하려면'Persistent'를'true'로 설정해야합니다. 그래서'ClientAccessable'가 작동하도록하기 위해 너무 많은 시간을 소비하지 않도록합니다 ('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가 작동하지 않으면 Powershell에 [AlphaVSS assembly] (http://alphavss.codeplex.com/)를로드 해보십시오. [여기에 스냅 샷을 생성하고 마운트하고 C#에서 삭제하는 방법이 있습니다.] (http://pastebin.com/XhVLyq0m), PowerShell로 변환 할 수 있어야합니다. –