Я пытаюсь использовать скрипт для
- отменить сопоставление диска
- очистите кэшированные учетные данные, используемые для сопоставления этого диска
- снова подключите диск, используя другие учетные данные пользователя.
В 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 по умолчанию связаны с блокнотом или другим текстовым редактором. Это я задумал. Конечно, вы можете изменить эту связь, но не делайте этого. Пользователи дважды щелкают практически по чему угодно, и это может привести к куче реальных проблем безопасности / управления рисками / эксплуатации для вас и вашей организации.
Существуют способы запуска двойным щелчком мыши с/без повышенных прав:
- Вся эта история с ассоциациями, просто не делайте этого.
- Вызовите .ps1 из файла bat/cmd.
Хотя я действительно всегда так считал, двойной щелчок для запуска даже для .bat, .vbs, .cmd и они просто запускаются, был плохой вещью, задолго до того, как PowerShell стал чем-то. Тем не менее, индустрия вошла в эту привычку, и поэтому трудно отучить людей от этого.
- Создайте пользовательский ярлык, настроенный на запуск по двойному щелчку.
Пример:
# 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
- Превратите наш скрипт в .exe с помощью инструмента MS PowerShellGallery.com.
PS2EXE-GUI: «конвертация» скриптов PowerShell в EXE-файлы с помощью графического интерфейса
Итак, у вас есть варианты. Какой из них вы выберете, зависит от эксплуатационных расходов и т. д.