Подключение сетевых дисков с помощью скрипта

Подключение сетевых дисков с помощью скрипта

Я пытаюсь использовать скрипт для

  1. отменить сопоставление диска
  2. очистите кэшированные учетные данные, используемые для сопоставления этого диска
  3. снова подключите диск, используя другие учетные данные пользователя.

В Windows 7 мне помог следующий скрипт

@echo off
net use Z: /delete /y >nul
net stop LanmanWorkstation /y >nul
net start LanmanWorkstation >nul
timeout 1 >nul
net use Z: \\path\to\directory

Этот скрипт предназначен для размонтирования того, что сопоставлено с Z. Затем очистите кэшированные учетные данные, использованные для монтирования z. Затем переназначьте диск, используя учетные данные другого пользователя.

Когда я запускаю это на Windows 10, net stop и net start выдают ошибки отказа в доступе. Я пробовал создать ярлык скрипта и настроить ярлык на постоянный запуск от имени администратора, но эта опция неактивна на моем компьютере, вероятно, из-за настроек групповой политики.

Я пытаюсь найти способ достичь этого же решения unmap/map и в настоящее время изучаю варианты, предоставляемые через powershell. Моя текущая попытка в powershell заключается в использовании

mount -Name "z" -PSProvider filesystem -Root "\\path\to\directory" -Persist

Карта должна быть постоянной, чтобы диск отображался в проводнике Windows. Эта команда работает как надо, когда я запускаю ее в PowerShell, но двойной щелчок по файлу для ее запуска не отображает диск, вероятно, из-за проблем с доступом. Я новичок в PowerShell и все еще изучаю его, поэтому не знаю всех доступных мне опций. Кто-нибудь знает, как добиться нужного мне эффекта?

решение1

Смотрите ниже ---

Очистить кэш учетных данных Windows

Утилиту для удаления кэшированных учетных данных найти сложно. Она хранит как данные сертификатов, так и пароли пользователей.

Откройте командную строку или введите следующую команду в поле «Выполнить»

 rundll32.exe keymgr.dll,KRShowKeyMgr

Также имеется утилита командной строки:

C:\> cmdkey /?

Создает, отображает и удаляет сохраненные имена пользователей и пароли.

Исторически сложилось так, что сопоставление дисков — это просто головная боль. Ну, вы знаете... ;-}

Net use не был единственным вариантом, так как вы могли использовать WScript в VBS или WMIC, чтобы сделать это. Так что, конечно, PowerShell может сделать WMI для этого.

#PSTip Создание подключенного сетевого диска с помощью WScript.Network

Пример того, как можно сопоставить диск, можно увидеть здесь:

(New-Object -ComObject WScript.Network).MapNetworkDrive('Z:','\\server\folder')

Это не будет отображать диск постоянно. Другими словами, диск исчезнет после перезагрузки или выхода пользователя из системы. Чтобы гарантировать, что отображение диска постоянно, следует добавить третий аргумент — логическое значение, установленное в true:

(New-Object -ComObject WScript.Network).MapNetworkDrive('Z:','\\server\folder',$true)

Использование ключа -persist — это опция PowerShell для закрепления диска, но, начиная с версии 3, у вас также есть командлеты Smb.

Get-Command -Name '*smb*'

CommandType     Name                   Version    Source
-----------     ----                   -------    ------
...         
Function        Get-SmbGlobalMapping   2.0.0.0    SmbShare
Function        Get-SmbMapping         2.0.0.0    SmbShare
...        
Function        Get-SmbShare           2.0.0.0    SmbShare
Function        Get-SmbShareAccess     2.0.0.0    SmbShare
....
Function        New-SmbMapping         2.0.0.0    SmbShare
...        
Function        New-SmbShare           2.0.0.0    SmbShare
...            
Function        Remove-SmbShare        2.0.0.0    SmbShare
...           
Function        Set-SmbShare           2.0.0.0    SmbShare
...

Смотрите также: Powershell: Подключить/Отключить сетевой диск на удаленном компьютере

Что касается этого...

Я запускаю его в PowerShell, но двойной щелчок по файлу для его запуска не приводит к отображению диска, вероятно, из-за проблем с доступом.

… это не вещь. .ps1 по умолчанию связаны с блокнотом или другим текстовым редактором. Это я задумал. Конечно, вы можете изменить эту связь, но не делайте этого. Пользователи дважды щелкают практически по чему угодно, и это может привести к куче реальных проблем безопасности / управления рисками / эксплуатации для вас и вашей организации.

Существуют способы запуска двойным щелчком мыши с/без повышенных прав:

  1. Вся эта история с ассоциациями, просто не делайте этого.
  2. Вызовите .ps1 из файла bat/cmd.

Хотя я действительно всегда так считал, двойной щелчок для запуска даже для .bat, .vbs, .cmd и они просто запускаются, был плохой вещью, задолго до того, как PowerShell стал чем-то. Тем не менее, индустрия вошла в эту привычку, и поэтому трудно отучить людей от этого.

  1. Создайте пользовательский ярлык, настроенный на запуск по двойному щелчку.

Пример:

# specify the path to your PowerShell script
$ScriptPath = "C:\test\test.ps1"

# create a lnk file
$shortcutPath = [System.IO.Path]::ChangeExtension($ScriptPath, "lnk")
$filename = [System.IO.Path]::GetFileName($ScriptPath)

# create a new shortcut
$shell = New-Object -ComObject WScript.Shell
$scut = $shell.CreateShortcut($shortcutPath)

# launch the script with powershell.exe:
$scut.TargetPath = "powershell.exe"

# skip profile scripts and enable execution policy for this one call
# IMPORTANT: specify only the script file name, not the complete path
$scut.Arguments = "-noprofile -executionpolicy bypass -file ""$filename"""

# IMPORTANT: leave the working directory empty. This way, the 
# shortcut uses relative paths 
$scut.WorkingDirectory = ""

# optinally specify a nice icon
$scut.IconLocation = "$env:windir\system32\shell32.dll,162"

# save shortcut file
$scut.Save()

# open shortcut file in File Explorer
explorer.exe /select, $ShortcutPath
  1. Превратите наш скрипт в .exe с помощью инструмента MS PowerShellGallery.com.

PS2EXE-GUI: «конвертация» скриптов PowerShell в EXE-файлы с помощью графического интерфейса

Итак, у вас есть варианты. Какой из них вы выберете, зависит от эксплуатационных расходов и т. д.

Связанный контент