1. 程式人生 > >Powershell學習之道-資料夾共享及磁碟對映

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
命令成功完成。
建立一個共享資料夾

瘋狂的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
小結
  1. 建立共享資料夾需要事先在啟用網路共享和發現。
  2. 需要提前做好資料夾許可權控制以及共享的許可權控制。
  3. 通過配置cmdkey可以免去身份認證
cmdkey /add:targetname /user:username /pass:password