4人参与 • 2025-04-24 • Powershell
在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 命令成功完成。
# 共享名 $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!!" }
::建议先查看当前的共享文件夹再进行创建操作 net share testshare=d:\share /users:25 /remark:"test share of the a folder"
我们很轻易地就能将一个文件夹的共享状态开启,我们可以通过unc路径对其进行访问。创建完文件共享之后,我们来看看怎么使用吧。
接下来,我们摒弃图形化界面的操作(如果你非喜欢那么做的话,可以通过网上邻居【“网络”】进行查看,或者在计算机图标下右键选择映射网络驱动器),我们来通过命令去启用吧。
临时创建一个网络驱动器映射:
(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使用此磁盘映射,但是不可利用资源管理器加载。 net use z: \\test-pc\users ::这里是将systemroot文件夹映射为z:驱动器,可利用"explorer.exe"加载,可惜不能使用网络路径。 subst z: $env:systemroot
完成如上的工作之后,不出意外,你的资源管理器会出现你想要访问的网络路径的图标。
如果不需要再使用此共享文件夹了,可以卸载掉网络驱动器,并在共享的主机上删除该共享。
$shares = get-wmiobject win32_share | where {$_.name -eq ""} foreach ($share in $shares) { $share.delete() }
net share testshare /delete
小结
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磁盘映射内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论