Powershell中的文件夹共享及磁盘映射的操作步骤
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">文件夹共享概述</a></li><li><a href="#_label1">操作步骤</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">查看共享列表</a></li></ul><li><a href="#_label2">创建一个共享文件夹</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_1">疯狂的Powershell</a></li><li><a href="#_lab2_2_2">低调的cmd</a></li></ul><li><a href="#_label3">驱动器映射和共享访问</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_3">强悍的Powershell</a></li><li><a href="#_lab2_3_4">小巧的cmd</a></li></ul><li><a href="#_label4">删除共享</a></li><ul class="second_class_ul"><li><a href="#_lab2_4_5">Powershell</a></li><li><a href="#_lab2_4_6">cmd</a></li></ul></ul></div><p>在Linux环境下,我们很轻易就能得心应手地通过命令操作一切事物,在Windows下,Powershell也算是后起之秀,提供大量的cmdlet以及c#的横向拓展。下面将由小编带领大家通过Powershell实现文件夹共享,当然文中也不会冷落cmd这枚老将。</p><p class="maodian"><a name="_label0"></a></p><h2>文件夹共享概述</h2>
<p>共享文件夹的应用非常广泛,客户端对服务器端进行文件管理,局域网文件直传等等,在linux下,可以简单的安装smaba协议,简单的配置之后即可使用。在windows下,可以通过图形化的操作开启这项功能,当然带着一点极客风格,我们通过powershell(少量出现cmd)来对其进行管理。</p>
<p class="maodian"><a name="_label1"></a></p><h2>操作步骤</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>查看共享列表</h3>
<p>在powershell内,我们可以通过执行以下cmdlet获取共享信息:</p>
<div class="jb51code"><pre class="brush:ps;">λ Get-WmiObject -Class Win32_Share
Name Path Description
---- ---- -----------
ADMIN$ C:\Windows 远程管理
C$ C:\ 默认共享
D$ D:\ 默认共享
E$ E:\ 默认共享
IPC$ 远程 IPC
Users C:\Users</pre></div>
<p>同理,在cmd下,也可以</p>
<div class="jb51code"><pre class="brush:ps;">λ net share
共享名 资源 注解
-------------------------------------------------------------------------------
C$ C:\ 默认共享
D$ D:\ 默认共享
E$ E:\ 默认共享
IPC$ 远程 IPC
ADMIN$ C:\Windows 远程管理
Users C:\Users
命令成功完成。</pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>创建一个共享文件夹</h2>
<p class="maodian"><a name="_lab2_2_1"></a></p><h3>疯狂的Powershell</h3>
<div class="jb51code"><pre class="brush:ps;"># 共享名
$ShareName = 'TestShare'
# 共享路径
$Path = 'D:\SHARE'
If (!(Get-WmiObject -Class Win32_Share -Filter "name='$ShareName'"))
{
$Shares = "WIN32_Share"
$Shares.Create($Path,$ShareName,0).ReturnValue
}
else
{
Write-Warning "$ShareName has been sharing!!"
}</pre></div>
<p>如果如果您有远程机器的管理员权限的话,也利用WMI在远程的机器上创建新的共享文件夹,下面是在远程主机上创建共享文件夹的代码:</p>
<div class="jb51code"><pre class="brush:ps;"># 共享名
$ShareName = 'TestShare'
# 共享路径
$Path = 'D:\SHARE'
# 远程主机名
$Server = 'Server'
If (!(Get-WmiObject -Class Win32_Share -Filter "name='$ShareName'"))
{
$Shares = "\\$Server\root\cimv2:WIN32_Share"
$Shares.Create($Path,$ShareName,0).ReturnValue
}
else
{
Write-Warning "$ShareName has been sharing!!"
}</pre></div>
<p class="maodian"><a name="_lab2_2_2"></a></p><h3>低调的cmd</h3>
<div class="jb51code"><pre class="brush:ps;">::建议先查看当前的共享文件夹再进行创建操作
net share TestShare=D:\SHARE /users:25 /remark:"test share of the a folder"</pre></div>
<p>我们很轻易地就能将一个文件夹的共享状态开启,我们可以通过UNC路径对其进行访问。创建完文件共享之后,我们来看看怎么使用吧。</p>
<p class="maodian"><a name="_label3"></a></p><h2>驱动器映射和共享访问</h2>
<p>接下来,我们摒弃图形化界面的操作(如果你非喜欢那么做的话,可以通过网上邻居【“网络”】进行查看,或者在计算机图标下右键选择映射网络驱动器),我们来通过命令去启用吧。</p>
<p class="maodian"><a name="_lab2_3_3"></a></p><h3>强悍的Powershell</h3>
<p>临时创建一个网络驱动器映射:</p>
<div class="jb51code"><pre class="brush:xhtml;">(New-Object -ComObject WScript.Network).MapNetworkDrive("Z:", "\\TEST-PC\USERS")</pre></div>
<p>创建一个持久化的网络驱动器映射:</p>
<div class="jb51code"><pre class="brush:xhtml;"># New-PSDrive 加上 -Persist 参数使得驱动器在 PowerShell 之外可见。
# 要真正地创建一个永久的网络驱动器,请确保加上 -Scope Global。/
# 如果 New-PSDrive 在全局作用域范围之外运行(例如,在一个脚本中运行),该驱动器只会在脚本运行时出现在文件管理器中。
New-PSDrive -Name Z -PSProvider FileSystem -Root \\TEST-PC\USERS -Persist -Scope Global</pre></div>
<p class="maodian"><a name="_lab2_3_4"></a></p><h3>小巧的cmd</h3>
<div class="jb51code"><pre class="brush:ps;">::下面这条命令虽然可以在cmd使用此磁盘映射,但是不可利用资源管理器加载。
net use Z: \\TEST-PC\USERS
::这里是将systemroot文件夹映射为z:驱动器,可利用"explorer.exe"加载,可惜不能使用网络路径。
subst Z: $env:systemroot</pre></div>
<p>完成如上的工作之后,不出意外,你的资源管理器会出现你想要访问的网络路径的图标。</p>
<p class="maodian"><a name="_label4"></a></p><h2>删除共享</h2>
<p>如果不需要再使用此共享文件夹了,可以卸载掉网络驱动器,并在共享的主机上删除该共享。</p>
<p class="maodian"><a name="_lab2_4_5"></a></p><h3>Powershell</h3>
<div class="jb51code"><pre class="brush:ps;">$Shares = Get-WMIObject Win32_Share | Where {$_.Name -eq ""}
Foreach ($Share in $Shares) {
$Share.Delete()
}</pre></div>
<p class="maodian"><a name="_lab2_4_6"></a></p><h3>cmd</h3>
<div class="jb51code"><pre class="brush:ps;">net share TestShare /delete</pre></div>
<p><strong>小结</strong></p>
<ul><li>建立共享文件夹需要事先在启用网络共享和发现。</li><li>需要提前做好文件夹权限控制以及共享的权限控制。</li><li>通过配置cmdkey可以免去身份认证</li></ul>
<div class="jb51code"><pre class="brush:xhtml;">cmdkey /add:targetname /user:username /pass:password</pre></div>
<p><strong>扩展:使用PowerShell 中设置共享文件夹</strong></p>
<p>使用PowerShell 中设置共享文件夹</p>
<div class="jb51code"><pre class="brush:ps;"># 定义要共享的文件夹路径和共享名称
$folderPath = "C:\Users\Public\Documents\SharedFolder"
$shareName = "SharedFolder"
# 创建共享
New-SmbShare -Name $shareName -Path $folderPath -FullAccess "Everyone"
# 显示共享信息
Get-SmbShare $shareName</pre></div>
<p>使用New-SmbShare命令创建了一个名为SharedFolder的共享,并指定了共享文件夹的路径和完全访问权限(即允许所有人访问)。然后,我们使用Get-SmbShare命令显示共享的信息。</p>
<p>需要注意的是,要使用New-SmbShare和Get-SmbShare命令,你需要在你的计算机上安装 Windows Management Framework 5.1 或更高版本。此外,还需要确保你有权限在计算机上创建共享,并且你要共享的文件夹必须存在。</p>
頁:
[1]