Powershell测试路径问题:检查服务器上是否存在文件夹

时间:2014-01-28 21:18:43

标签: powershell directory remote-server

我有一个驻留在ServerA上的powershell脚本(test.ps1)。应该做的所有脚本都是检查服务器上是否存在文件夹。我正在从客户端(在同一网络内)执行脚本

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

4 个答案:

答案 0 :(得分:1)

您是否尝试过powershell远程处理:

输入-PSSession -ComputerName ServerA

这将允许PowerShell命令在ServerA上运行

答案 1 :(得分:0)

这应该有效:

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

答案 2 :(得分: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]是ArgumentList中参数的位置)。

答案 3 :(得分:-2)

Test-Path "filesystem::\\\Srv\share"