スクリプトを使用してネットワークドライブをマッピングする

スクリプトを使用してネットワークドライブをマッピングする

スクリプトを使って

  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 が唯一のオプションではなく、VBS または WMIC で WScript を使用してこれを行うこともできます。したがって、PowerShell では WMI を使用してこれを行うことができます。

#PSTip WScript.Network を使用してマップされたネットワーク ドライブを作成する

ドライブをマッピングする方法の例を次に示します。

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

これではドライブは永続的にマップされません。つまり、再起動後またはユーザーがログアウトするとドライブは消えます。ドライブ マッピングが永続的であることを保証するには、3 番目の引数を追加する必要があります。これは、ブール値を true に設定したものです。

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

-persist スイッチを使用するのは、ドライブの固定性のための PowerShell オプションですが、v3 以降では 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. bat/cmd ファイルから .ps1 を呼び出します。

私はいつもそう感じていましたが、.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. この MS PowerShellGallery.com ツールを使用して、スクリプトを .exe に変換します。

PS2EXE-GUI: GUI を使用して PowerShell スクリプトを EXE ファイルに「変換」する

つまり、選択肢はあります。どれを選択するかは、運用上の余裕などによって決まります。

関連情報