2011-12-02 58 views
14

這簡直太瘋狂了,我開始使用PowerShell。當然,我需要遠程執行Admin工作。什麼安全設置可以阻止遠程PowerShell 2.0訪問UNC路徑

簡單

dir \\server\share\folder 

就拒絕工作,我得到這個錯誤

Get-ChildItem : Cannot find path '\\server\share\folder' because it does not exist. 
    + CategoryInfo   : ObjectNotFound: (\\server\share\folder:String) [Get-ChildItem], ItemNotFoundException 
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand 

對我來說是很明顯它是一個訪問權限問題。我們在公司有一個域名。我使用完全相同的用戶帳戶在VNC上登錄到服務器,並且可以看到UNC路徑。但是,每當我嘗試從遠程連接從我的桌面複製文件。它只是不會工作!

我可以做很多其他的事情,所以我是積極的,我連接。

+0

在dos shell命令'dir \\ server \ share \ folder'中沒有提示錯誤? –

+0

這是正確的。也許我應該寫「dir \\ MyServer \ MyShare \ MyFolder」。我確實發現我需要設置CredSSP,我做了,但仍然收到一個超時值,然後是Enable-WSManCredSSP:由於無法啓用該設置,因此無法執行此命令。如果沒有網絡連接,就會發生這種情況。 –

+0

現在,我使用gpedit.msc來允許在這兩臺計算機上使用新的證書。我設置了新的證書策略,並使用'enable-wsmancredssp -role client -delegatecomputer computer1.domain.com'和'enable-wsmancredssp -role server'命令。對於狀態,我執行'Get-WSManCredSSP',我得到 **機器配置爲允許將新的憑據委託給以下目標:wsman/computer1.domain.com,wsm 和/ *。domain.com。這臺計算機被配置爲從遠程客戶端計算機接收憑證。**我找不到其他任何人要執行的操作,但它仍然無法運行! –

回答

15

爲了使其發揮作用,您必須配置本地和遠程計算機。

在遠程服務器上,運行以下命令:

Enable-WSManCredSSP -Role server 

你會知道,如果你運行Get-WSManCredSSP cmdlet的事情正確confgured並得到下面的輸出:

The machine is not configured to allow delegating fresh credentials. This computer is configured to receive credentials from a remote client computer.

在本地計算機上,從管理PowerShell提示符處,您需要允許在PowerShell中進行憑據委託。運行以下命令:

Enable-WSManCredSSP -Role Client -DelegateComputer <REMOTE_COMPUTER_NAME> 

您可以通過使用*爲REMOTE_COMPUTER_NAME使所有服務器。

The machine is configured to allow delegating fresh credentials to the following target(s): wsman/REMOTE_SERVER_NAME
This computer is not configured to receive credentials from a remote client computer.

在本地計算機,更新組策略,讓您的憑據委託給:

你會知道這個,當你運行Get-WSManCredSSP並得到下面的輸出配置正確遠程服務器。

  1. 打開gpedit.msc並瀏覽到Computer Configuration> Administrative Templates> System> Credentials Delegation。
  2. 雙擊「允許使用僅限NTLM的服務器身份驗證委託新憑據」。
  3. 啓用設置並將生成服務器添加到WSMAN/BuildServerName的服務器列表中。 (您可以通過輸入WSMAN/*啓用所有服務器。)

然後,當你需要在遠程服務器上運行命令,你不能使用任何的* -PSSession的命令因爲能的CredSSP不使用緩存的憑據。你必須開始使用Invoke-Command的會話,使用的CredSSP作爲值的驗證參數,像這樣:

Invoke-Command -ScriptBlock { # remote commands here } ` 
       -ComputerName <REMOTE_COMPUTER_NAME> ` 
       -Authentication CredSSP ` 
       -Credential <USERNAME> 
+1

很好的答案和很多很好的信息謝謝!不幸的是,我仍然有一個問題。我已經在組策略中進行了更改,但是當我在提升的PS窗口中運行以下內容時:「Enable-WSManCredSSP -role Client -DelegateComputer d-vasbiz01 -force」出現以下錯誤:「Enable-WSManCredSSP:This command不能執行,因爲設置無法啓用「任何想法? –

+0

我找到了!問題出在組策略編輯器中,我需要將我委派的服務器的名稱加上「wsman /」的前綴。正如答案所述,但我錯過了!非常感謝您的答覆。 –

+0

我不必在正確的計算機上執行「組策略」步驟,只需啓用「客戶端」並啓用「服務器」角色即可。 – rob

0

PowerShell還上運行遠程腳本使用Internet Explorer的安全設置。我發現,無論你想要運行遠程腳本的機器,如果我將遠程機器的unc路徑添加到我的受信任的intrAnet站點,我可以運行腳本(假設我的執行策略在posh被設置爲remotesigned ....「set-executionpolicy remotesigned」)。

對於有和沒有SQL的多個服務器,我做了大量的管理,而且我從來沒有對Enable-WSManCredSSP做過任何事情。

相關問題