Спасите!
На моем сервере запущен hMailServer, и эта служба использует учетную запись локальной системы.
Мне нужно скопировать файл на другую машину. Итак, у меня есть сценарий, который будет использовать cmdkey.exe для сохранения учетных данных, а затем скопировать файл.
Если я сам запускаю эту функцию (в отдельном файле vbs) при входе на сервер, она работает, но я являюсь администратором. Однако, если я позволю службе hMailServer запустить эту функцию, функция запустится, но всегда говорит, что пункт назначения не существует.
Обратите внимание, что я закомментировал удаление учетных данных. Если я зайду на сервер и запущу cmdkey /list
, я увижу, что учетные данные никогда не устанавливались, что означает, что команда не удалась. Это означает, что первая установка учетных данных, вероятно, также не удалась, поэтому «objFSO» не может найти каталог.
Опять же, если все это поместить в отдельный файл и запустить как test.vbs
двойным кликом по файлу, то работает. Но если я использую его из hMailServer, он не работает.
Я полагаю, это означает, что hMailServer (учетная запись локальной системы) не имеет прав для установки учетных данных? Как заставить это работать?
option explicit
dim SPcopyMessage
SPcopyMessage = CopyFileToRemoteMachine("SERVER", "mydomain\username", "password", "c:\test2.txt", "\\SERVER\somefolder\otherfolder")
MsgBox SPcopyMessage
function CopyFileToRemoteMachine(whatMachine, whatUsername, whatPassword, whatSourceFile, whatDestination)
dim errormessage, CredentialCreate, CredentialDelete
errormessage = "Sharepoint Mail Delivered"
CredentialCreate = "cmd.exe /c cmdkey /add:" & whatMachine & " /user:" & whatUsername & " /pass:" & whatPassword
Dim objShell, objFSO
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
CALL objShell.Run(CredentialCreate, 0, True) 'add username to the credentials list
If objFSO.FileExists(whatSourceFile) Then
If objFSO.FolderExists(whatDestination) Then
If Right(whatDestination, 1) <> "\" Then
whatDestination = whatDestination & "\"
End If
objFSO.CopyFile whatSourceFile, whatDestination, True
Else
errormessage = "Destination does not exist: " & whatDestination
End If
Else
errormessage = "Source file does not exist: " & whatSourceFile
End If
'CredentialDelete = "cmd.exe /c cmdkey /delete:" & whatMachine
'CALL objShell.Run(CredentialDelete, 0, True)
set objFSO = nothing
set objShell = nothing
CopyFileToRemoteMachine = errormessage
end function