Назад | Перейти на главную страницу

Powershell: создание и отключение диска карты сети с пользователем SYSTEM

Мне нужно сопоставить сетевой диск с пользователем SYSTEM, я создал PS1, который запускается запланированной задачей, первая часть успешно отображает диск:

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("y:", "\\SAN_SERVER\folder1", $false, "domain\service_user", "password")

После сопоставления происходит куча вещей, копирование файлов и т. Д.

В конце скрипта подключенный диск нужно отключить:

& 'D:\Scripts\PsExec64.exe' -s cmd /c "net use y: /delete /yes"

Эта команда работает, если я запускаю ее вручную из своей учетной записи (мне нужно запустить PS от имени администратора), однако она не работает из сценария в запланированной задаче, я использую PsExec64.exe, потому что я узнал, что, поскольку сеть диск был сопоставлен с доменом \ пользователем, он может быть отключен только с доменом / пользователем_службы, если мы не используем PsExec64.exe, есть ли способ отключить диск, используя другие данные?

На данный момент я предполагаю, что у вас есть причины совместимости / устаревшие, чтобы не использовать собственный Новый-PSDrive командлет из вашего сценария Powershell.

Итак, поскольку вы уже используете наследие MapNetworkDrive из WScript.Network, почему вы используете net use с psexec вместо использования его партнера, RemoveNetworkDrive?

Не используйте буквы дисков. Powershell, даже в версии 2.0, позволит вам широко использовать UNC-пути при работе с файловой системой. Таким образом, вы можете напрямую обращаться к местоположениям без PSDrive или буквы диска. Тогда вам не нужно ничего отображать, и вам не нужно их отключать.

#as the service account
Set-Location \\SAN_SERVER\folder1
#this is the same as net use y: \\SAN_SERVER\folder1;cd y:

Затем просто выполняйте манипуляции с файлом с относительными путями. Вы также можете присвоить переменным имя сервера и путь к папке, чтобы вы могли использовать "$server\$folderpath\" вместо буквы диска.

Я нашел ответ, и это так глупо ..

& net use y: /delete /yes

Это работает при запуске из запланированной задачи с помощью SYSTEM .. Просто нужно добавить &, показывает отсутствие у меня навыков PS .. о, мальчик