powershell 来自另一个域的计算机上的测试路径出现问题

rjee0c15  于 2022-12-04  发布在  Shell
关注(0)|答案(1)|浏览(97)

我正在尝试使用-credential从另一个域测试计算机中的远程文件夹
此命令可以正常工作:

Invoke-Command -ComputerName "server" -credential domain\user -ScriptBlock {Test-Path -Path "\\server\s$\temp"}

但如果我在脚本中使用它失败:

$servers = Get-Content "servers.txt"
$Path = "\\D$\Temp"
$cred = "domain\user"

ForEach ($server in $servers) {

    if (invoke-command -computername $server -credential $cred -ScriptBlock {Test-Path -Path "\\$server\$Path"})
}

PD:所有这些选项都在我的域的服务器上工作,无需指定另一个凭据。

q43xntqr

q43xntqr1#

除了在if语句后缺少脚本块的语法问题外,只要将变量指定为远程变量,就可以使用$using或将其作为-ArgumentList的参数传递。

$servers = Get-Content "servers.txt"
$Path = "\\c$\Temp"
$cred = "domain\user"

ForEach ($server in $servers) {
    if (
        invoke-command -computername $server -ScriptBlock {
            Test-Path -Path "\\$using:server\$using:Path"
        }
    ) { <#do code here#> }
}

如果您开始使用正确的凭据运行shell,您所要做的就是直接使用Test-Path,但我理解您希望尝试使用-Credential参数。

相关问题