2014-01-28 62 views
0

我有一個PowerShell腳本(test.ps1)駐留在ServerA上。所有腳本應該做的是檢查服務器上是否存在文件夾。我從一個客戶端執行腳本(同一網絡內)Powershell測試路徑問題:檢查服務器上是否存在文件夾

test.ps1

test-path E:\automation 
# returns whether this folder exists on ServerA 

我打電話從ComputerB的PowerShell的那個腳本。

PS > pushd \\serverA\scripts 
PS > .\test.ps1 

輸出:

False 

預期輸出:

True 

問題:

The script is trying to locate the folder on the "local system" (ComputerB) rather than ServerA 

回答

1

你嘗試過PowerShell遠程:

輸入-的PSSession -ComputerName服務器A

這將使PowerShell命令將在ServerA

+0

我認爲pushd會這樣做。謝謝。會嘗試。 – DataRiver

+0

Pushd會記住您已移至的路徑。 – Chriseyre2000

+0

所以我們在計算機B上運行Enter-PSSession命令,對嗎? – DataRiver

0

運行這應該工作:

invoke-command \\serverA\scripts\test.ps1 -computername serverB

+0

如何將參數傳遞給此腳本(test.ps1)? – DataRiver

-2
Test-Path "filesystem::\\\Srv\share" 
+0

如果不共享該怎麼辦? – n0rd

+1

請添加一個說明如何解決這個問題。 [回答] –

0

你可以用PSSession中做到這一點。我的工作代碼:

$ip = "<server ip/dns name>" 
$user = "<your user name>" 
$s = New-PSSession -ComputerName $ip -Credential $user 

$serverTestFolder = "c:\" 

if (Invoke-Command -Session $s -ScriptBlock {Test-Path -path $args[0]} -ArgumentList $serverTestFolder) { 
    # here you are when folder exist on remote server 
} 

這裏重要的是,你需要通過可變$serverTestFolder如通過ArgumentList參數,然後通過$args消耗它([0]中參數列表參數的位置)。

相關問題