[server] Powershell을 사용하여 USB 외장 드라이브 분리

powershell을 사용하여 외장 USB 드라이브를 분리하려고하는데 성공적으로 수행 할 수 없습니다. 다음 스크립트는 내가 사용하는 것입니다.

#get the Win32Volume object representing the volume I wish to eject 

$drive = Get-WmiObject Win32_Volume -filter "DriveLetter = 'F:'"

#call dismount on that object there by ejecting drive

$drive.Dismount($Force , $Permanent)

그런 다음 컴퓨터를 검사하여 드라이브가 마운트 해제되어 있는지 확인합니다.

부울 매개 변수 $ force 및 $ permanent는 다른 순열로 시도했지만 사용할 수 없습니다. 매개 변수가 토글되면 마운트 해제 명령에 의해 리턴 된 종료 코드가 변경됩니다.

(0,0) = exit code 0

(0,1) = exit code 2

(1,0) = exit code 0

(1,1) = exit code 2

종료 코드 2에 대한 문서는 마운트 해제 할 수없는 이유로 기존 마운트 포인트가 있음을 나타냅니다. 존재하는 유일한 마운트 지점을 마운트 해제하려고 시도하지만이 종료 코드가 무엇을 말하려고하는지 확실하지 않습니다.

비슷한 문제가 발생하는 사람들을 위해 이미 웹을 트롤링 한 후에 시도해야 할 추가 명령이 하나 뿐이며 다음과 같습니다.

# executed after the .Dismount() command

$drive.Put() 

이 추가 명령은 도움이되지 않습니다.

시도해 볼 것들이 없어서 누군가가 나에게 줄 수있는 도움은 크게 감사하겠습니다.



답변

pk의 샘플과 같이 반으로 구운 공개 참조를 남기지 않는 깨끗한 솔루션은 다음과 같습니다.

  $driveEject = New-Object -comObject Shell.Application
  $driveEject.Namespace(17).ParseName("E:").InvokeVerb("Eject")

http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html 에서 검색


답변

나는 어떻게 mountvol작동 하는지 살펴보고 싶을지도 모른다 . 분리 정도가 다릅니다.

Mountvol 또는 Mountvol /?

이름, GUID (Globally Unique Identifier) ​​및 볼륨 위치를 표시합니다.

Mountvol [드라이브 :] 경로 VolumeName

새 볼륨 탑재 지점을 만듭니다. 드라이브 문자 루트 디렉토리 또는 기존의 빈 NTFS 디렉토리를 마운트 지점의 소스로 지정하고 볼륨 이름을 대상으로 지정하십시오.

Mountvol [드라이브 :] 경로 / D

기존 볼륨 마운트 포인트를 삭제합니다.

Mountvol [드라이브 :] 경로 / L

주어진 볼륨 마운트 포인트의 볼륨 이름을 나열합니다.

VBScript에서 제거하기에 너무 지루한 (하드 드라이브 읽기) 오래된 하드웨어의 드라이브 마운트가 명시 적으로 마운트 포인트를 언급 할 수있는 사용자 정의 GUI의 바로 가기를 방해하는 오래된 데스크탑에서 장치를 재정렬하기 위해 필요한 것과 비슷한 작업을 시도했습니다 ( 특정 목적의 D :, E :, F :). 이는 매우 실망 스러웠으며 mountvol 입력 및 출력을 사용하여 마운트를 해제했다가 다시 마운트해야 제대로 작동하는지 확인하고 변경을 진행해야합니다. 나보다 운이 좋으면 좋겠다.


답변