tech.guitarrapc.cóm

Technical updates

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

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

PowerShell V2.0 でのサンプル

見かけたのは、こんな例でした。 ふぇぇ
	 [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!"
		  }
	 }
ないです。 こんなのも見かけました。 つらいですね。
$Network = New-Object -ComObject "Wscript.Network"
$Network.MapNetworkDrive("P:", "\\MyComputer\MyShare")
なおリストアップはこれで
(New-Object -Com WScript.Network).EnumNetworkDrives()
削除はこれで
(New-Object -Com WScript.Network).RemoveNetworkDrive("P:")
ほげ~。

PowerShell V3.0 でのサンプル

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
}
色々好きに処理すればいいと思います。

SampleSource

ごくごく簡単ですが。 https://github.com/guitarrapc/PowerShellUtil/blob/master/Set-ShareDrive/SEt-ShareDrive.ps1