vbscript 내에서 네트워크 공유에 대한 액세스 네트워크 예를 들어 FileSystemObject

StackOverflow https://stackoverflow.com/questions/631401

  •  08-07-2019
  •  | 
  •  

문제

대체 자격 증명 (VBS 스크립트가 실행중인 자격 증명이 아님)을 사용하여 VBS 스크립트 내에서 네트워크 공유에 액세스 할 수있는 좋은 방법이 있습니까?

의도는 두 가지 작업을 수행하는 것입니다.

  1. 원격 공유 파일 구조를 프로그래밍 방식으로 탐색하여 몇 개의 원격 파일이 존재하는지 확인하고 하나의 파일을 다른 파일 위에 복사하십시오 (둘 다 원격)
  2. 로컬 드라이브에서 파일을 로컬 사용자 이름 / 권한으로 액세스) 원격 드라이브 (대체 자격 증명으로 액세스)로 복사하십시오.

내가 FSO (Scripting.FileSyStemObject)를 알 수있는 한 로컬 머신 사용자 일 것입니다. (?)

"NET 사용"을 사용하여 원격 공유 자격 증명을 제공 한 다음 파일을 RoboCopy 등으로 복사하는 배치 파일 (또는 "cmd.exe"로 확장 된 호출)을 준비하기 위해 인터넷 검색을하는 동안 찾은 유일한 실행 가능한 접근 방식입니다. , 동일한 명령 쉘 "세션"내에서. 이것은 로컬 드라이브에서 원격 공유로 파일을 복사/배포하는 데 적합하지만, FSO를 사용하는 것처럼 모든 종류의 파일 시스템 브라우징을 수행하는 것은 매우 복잡하고 부서지기 쉬운 일입니다.

내가 고려한 또 다른 가능성은 두 개의 스크립팅 세션을 갖는 것과 관련이 있습니다. 스크립트 (명령 줄에 대체 자격 증명 제공)를 호출하고 CMD.exe 세션을 실행합니다.이 세션은 먼저 원격 공유를 임시에 매핑하기 위해 "NET 사용"을 수행합니다. 로컬 드라이브는 "실제로 작업"모드로 실행되고 FSO를 사용한 다음 (CMD.EXE 쉘로 돌아갈 때) 임시 드라이브를 다시 "NET 사용"으로 연결합니다. 이것은 어리석은 (여러 창, 임시 드라이브 ...)이며 그것이 작동할지조차 확신하지 못합니다.

어느 쪽이든 아는 사람이 있습니까? 아니면 실행 가능한 대안을 아는 사람이 있습니까? (Windows 2000 머신에서 VBScript / wscript에 고집 - PowerShell 없음!)

도움이 되었습니까?

해결책

좋아, 나는 오해하에 일하고 있었다 - FSO는 "Net Use"(또는 wscript.network "mapnetworkdrive")로 설정된 네트워크 자격 증명을 "픽업"하지 않을 것입니다.

그 결과가 나오고 다음 샘플 코드는 매우 잘 작동합니다 (임시 네트워크 드라이브를 설정할 필요없이).

ServerShare = "\\192.168.3.56\d$"
UserName = "domain\username"
Password = "password"

Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")

NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password

Set Directory = FSO.GetFolder(ServerShare)
For Each FileName In Directory.Files
    WScript.Echo FileName.Name
Next

Set FileName = Nothing
Set Directory = Nothing
Set FSO = Nothing

NetworkObject.RemoveNetworkDrive ServerShare, True, False

Set ShellObject = Nothing
Set NetworkObject = Nothing
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top