Powershell中的文件夹共享及磁盘映射的操作步骤

 更新时间:2025年02月21日 09:22:23   作者:冯琪  
本文介绍了如何在Windows下使用Powershell和cmd实现文件夹共享,内容包括查看共享列表、创建共享文件夹、驱动器映射和共享访问、删除共享等操作步骤,感兴趣的朋友跟随小编一起看看吧

在Linux环境下,我们很轻易就能得心应手地通过命令操作一切事物,在Windows下,Powershell也算是后起之秀,提供大量的cmdlet以及c#的横向拓展。下面将由小编带领大家通过Powershell实现文件夹共享,当然文中也不会冷落cmd这枚老将。

文件夹共享概述

共享文件夹的应用非常广泛,客户端对服务器端进行文件管理,局域网文件直传等等,在linux下,可以简单的安装smaba协议,简单的配置之后即可使用。在windows下,可以通过图形化的操作开启这项功能,当然带着一点极客风格,我们通过powershell(少量出现cmd)来对其进行管理。

操作步骤

查看共享列表

在powershell内,我们可以通过执行以下cmdlet获取共享信息:

λ Get-WmiObject -Class Win32_Share
Name                                      Path                                      Description
----                                      ----                                      -----------
ADMIN$                                    C:\Windows                                远程管理
C$                                        C:\                                       默认共享
D$                                        D:\                                       默认共享
E$                                        E:\                                       默认共享
IPC$                                                                                远程 IPC
Users                                     C:\Users

同理,在cmd下,也可以

λ net share
共享名       资源                            注解
-------------------------------------------------------------------------------
C$           C:\                             默认共享
D$           D:\                             默认共享
E$           E:\                             默认共享
IPC$                                         远程 IPC
ADMIN$       C:\Windows                      远程管理
Users        C:\Users
命令成功完成。

创建一个共享文件夹

疯狂的Powershell

# 共享名
$ShareName = 'TestShare'
# 共享路径
$Path = 'D:\SHARE'
If (!(Get-WmiObject -Class Win32_Share -Filter "name='$ShareName'")) 
{ 
	$Shares = [WMICLASS]"WIN32_Share" 
	$Shares.Create($Path,$ShareName,0).ReturnValue
}
else
{
	Write-Warning "$ShareName has been sharing!!"
}

如果如果您有远程机器的管理员权限的话,也利用WMI在远程的机器上创建新的共享文件夹,下面是在远程主机上创建共享文件夹的代码:

# 共享名
$ShareName = 'TestShare'
# 共享路径
$Path = 'D:\SHARE'
# 远程主机名
$Server = 'Server'
If (!(Get-WmiObject -Class Win32_Share -Filter "name='$ShareName'")) 
{ 
	$Shares = [WMICLASS]"\\$Server\root\cimv2:WIN32_Share" 
	$Shares.Create($Path,$ShareName,0).ReturnValue
}
else
{
	Write-Warning "$ShareName has been sharing!!"
}

低调的cmd

::建议先查看当前的共享文件夹再进行创建操作
net share TestShare=D:\SHARE /users:25 /remark:"test share of the a folder"

我们很轻易地就能将一个文件夹的共享状态开启,我们可以通过UNC路径对其进行访问。创建完文件共享之后,我们来看看怎么使用吧。

驱动器映射和共享访问

接下来,我们摒弃图形化界面的操作(如果你非喜欢那么做的话,可以通过网上邻居【“网络”】进行查看,或者在计算机图标下右键选择映射网络驱动器),我们来通过命令去启用吧。

强悍的Powershell

临时创建一个网络驱动器映射:

(New-Object -ComObject WScript.Network).MapNetworkDrive("Z:", "\\TEST-PC\USERS")

创建一个持久化的网络驱动器映射:

# New-PSDrive 加上 -Persist 参数使得驱动器在 PowerShell 之外可见。
# 要真正地创建一个永久的网络驱动器,请确保加上 -Scope Global。/
# 如果 New-PSDrive 在全局作用域范围之外运行(例如,在一个脚本中运行),该驱动器只会在脚本运行时出现在文件管理器中。
New-PSDrive -Name Z -PSProvider FileSystem -Root \\TEST-PC\USERS -Persist -Scope Global

小巧的cmd

::下面这条命令虽然可以在cmd使用此磁盘映射,但是不可利用资源管理器加载。
net use Z: \\TEST-PC\USERS
::这里是将systemroot文件夹映射为z:驱动器,可利用"explorer.exe"加载,可惜不能使用网络路径。
subst Z: $env:systemroot

完成如上的工作之后,不出意外,你的资源管理器会出现你想要访问的网络路径的图标。

删除共享

如果不需要再使用此共享文件夹了,可以卸载掉网络驱动器,并在共享的主机上删除该共享。

Powershell

$Shares = Get-WMIObject Win32_Share | Where {$_.Name -eq ""}
Foreach ($Share in $Shares) {
   $Share.Delete()
}

cmd

net share TestShare /delete

小结

  • 建立共享文件夹需要事先在启用网络共享和发现。
  • 需要提前做好文件夹权限控制以及共享的权限控制。
  • 通过配置cmdkey可以免去身份认证
cmdkey /add:targetname /user:username /pass:password

扩展:使用PowerShell 中设置共享文件夹

使用PowerShell 中设置共享文件夹

# 定义要共享的文件夹路径和共享名称
$folderPath = "C:\Users\Public\Documents\SharedFolder"
$shareName = "SharedFolder"
# 创建共享
New-SmbShare -Name $shareName -Path $folderPath -FullAccess "Everyone"
# 显示共享信息
Get-SmbShare $shareName

使用New-SmbShare命令创建了一个名为SharedFolder的共享,并指定了共享文件夹的路径和完全访问权限(即允许所有人访问)。然后,我们使用Get-SmbShare命令显示共享的信息。

需要注意的是,要使用New-SmbShare和Get-SmbShare命令,你需要在你的计算机上安装 Windows Management Framework 5.1 或更高版本。此外,还需要确保你有权限在计算机上创建共享,并且你要共享的文件夹必须存在。

到此这篇关于Powershell中的文件夹共享及磁盘映射的文章就介绍到这了,更多相关Powershell磁盘映射内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Powershell后台作业、异步操作实例

    Powershell后台作业、异步操作实例

    如果需要加快执行一个脚本,你可能需要用到后台作业。后台作业能同时运行脚本中多个事件
    2014-04-04
  • 使用PowerShell将Excel工作表另存为独立文件

    使用PowerShell将Excel工作表另存为独立文件

    这篇文章主要为大家介绍了如何使用 PowerShell 脚本将一个 Excel 文件中的每个工作表单独另存为独立的 Excel 文件,以提高工作效率,需要的可以参考一下
    2023-08-08
  • PowerShell小技巧之查找获取注册表路径

    PowerShell小技巧之查找获取注册表路径

    这篇文章主要介绍了在PowerShell中使用递归查找获取注册表路径的小技巧,有需要的朋友可以参考下
    2014-09-09
  • 详谈Ubuntu PowerShell(小白入门必看教程)

    详谈Ubuntu PowerShell(小白入门必看教程)

    下面小编就为大家带来一篇详谈Ubuntu PowerShell(小白入门必看教程)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Powershell小技巧之获取字符串的行数

    Powershell小技巧之获取字符串的行数

    这篇文章主要介绍了Powershell获取字符串的行数的小技巧,只要懂得了它的工作原理就能在多种场合使用。需要的朋友可以参考下
    2014-09-09
  • Windows Powershell调用静态方法

    Windows Powershell调用静态方法

    Powershell将信息存储在对象中,每个对象都会有一个具体的类型,简单的文本会以System.String类型存储,日期会以System.DateTime类型存储。任何.NET对象都可以通过GetType()方法返回它的类型,该类型中有一个FullName属性,可以查看类型的完整名称。
    2014-09-09
  • powershell常用命令分类

    powershell常用命令分类

    本文创建了powershell常用命令 ,主要分为get类、set类、write类三大类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2014-10-10
  • PowerShell端口扫描之解析多格式输出与结果处理技巧

    PowerShell端口扫描之解析多格式输出与结果处理技巧

    在日常网络安全评估或系统管理工作中,很多管理员都会遇到这样的情况:执行了一个看似简单的PowerShell端口扫描命令,期望得到一个简单的文本结果文件,却发现生成了多个不同格式的文件,所以本文介绍了PowerShell端口扫描之解析多格式输出与结果处理技巧
    2025-10-10
  • PowerShell中使用Like运算符配合通配符查找字符串例子

    PowerShell中使用Like运算符配合通配符查找字符串例子

    这篇文章主要介绍了PowerShell中使用Like运算符配合通配符查找字符串例子,Like的返值为TRUE和FALSE,需要的朋友可以参考下
    2014-08-08
  • PowerShell中按文件后缀过滤的实现代码

    PowerShell中按文件后缀过滤的实现代码

    这篇文章主要介绍了PowerShell中按文件后缀过滤的实现代码,自定义了一个过滤器来满足需求,需要的朋友可以参考下
    2014-08-08

最新评论