tech.guitarrapc.cóm

Technical updates

PowerShellで共有ドライブ(マップドライブ)を作成する

なんだかずいぶん手間のかかることをしている記事を見かけたのですが、ん~、そこまでしなくてもと思っちゃったので一応サンプルを。 net useを使わずやりましょう。

PowerShell 3.0 でのサンプル

ソースコードをおいておきます。

guitarrapc/PowerShellUtil -Set-ShareDrive/SEt-ShareDrive.ps1 | GitHub

PowerShell 3.0からNew-PSDriveを使えば共有ドライブを作成できます。-PersistパラメータをつけないとそのPSセッションを抜けたときに消されますが、-Peristをつけるとセッション終了後も利用できます。

$SharePath = "\\共有したいドライブパス"
$DriveName = "空いてるドライブ名"
if(-not ((Get-PSDrive).DisplayRoot -contains $SharePath))
{
  New-PSDrive -Name $DriveName -PSProvider FileSystem -Root $SharePath -Persist
}

PowerShell 2.0 でのサンプル

PowerShell 2.0では次のようにWScriptを利用する必要がありました。

   [CmdletBinding()]
   param(
      [string]$driveletter,
      [string]$path,
      [switch]$persistent
   )
   process{
      $nwrk=new-object -com Wscript.Network
      Write-Verbose "Mapping $($driveletter+':') to $path and persist=$persistent"
      try{
         $nwrk.MapNetworkDrive($($driveletter+':'),$path)
         Write-Verbose "Mapping successful."
      }
      catch{
         Write-Verbose "Mapping failed!"
      }
   }

別口でCOMを使う方法もありますがつらいです。

$Network = New-Object -ComObject "Wscript.Network"
$Network.MapNetworkDrive("P:", "\\MyComputer\MyShare")

リストアップはこれで

(New-Object -Com WScript.Network).EnumNetworkDrives()

削除はこれで

(New-Object -Com WScript.Network).RemoveNetworkDrive("P:")