如何在 PowerShell 中測試遠端計算機上的共享路徑?
很多時候我們需要從遠端伺服器測試 NAS 路徑或共享路徑位置。這意味著我們需要檢查共享路徑是否可以從遠端位置訪問,並且我們使用 **Test-Path**,但我們會收到 **PermissionDenied** 或 **UnauthorizedAccessExcept** 錯誤。
我們的示例程式碼如下所示,在這個例子中,我們使用 **Invoke-Command** 連線到另一臺計算機,然後從中檢查共享路徑是否可訪問。
示例
Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock {
Test-Path -Path "\ad\Shared\Temp"
}此指令碼引發異常。
輸出
Access is denied + CategoryInfo : PermissionDenied: (\ad\Shared\Temp:String) [Test-Path], UnauthorizedAccessException + FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.TestPathCommand + PSComputerName : LabMachine2k16 False
這不是許可權問題,而是 PowerShell 遠端處理問題。預設情況下,PowerShell 遠端處理支援一層遠端處理,這裡我們連線到遠端計算機,並再次檢查其共享路徑,因此它成為兩階段遠端處理,而 PowerShell 不支援它。
要解決此問題,我們可以使用對映驅動器來測試我們是否可以成功連線。如果是,則遠端伺服器可以連線到該路徑。例如,
示例
Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock{
if(New-PSDrive -Name X -PSProvider FileSystem `
-Root "\Ad\Shared\Temp" -EA Ignore){
Write-Output "Path is accessible"
}
}輸出
Path is accessible
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP