Powershell не имеет доступа к сетевому ресурсу - PullRequest
3 голосов
/ 15 августа 2011

Я использую PowerShell, чтобы проверить, открыты ли порты на моих компьютерах. Я получил 8 машин Windows 2008 R2 и запускаю следующий скрипт:

$localhost = get-content env:computername

foreach($port in get-content "\\computer1\txtfiles\ports.txt")
{

foreach ($hostname in get-content "\\compiuter1\txtfiles\servers.txt")
    {
    try {
        $sock = new-object System.Net.Sockets.Socket -ArgumentList $([System.Net.Sockets.AddressFamily]::InterNetwork),$([System.Net.Sockets.SocketType]::Stream),$([System.Net.Sockets.ProtocolType]::Tcp)
    $sock.Connect($hostname,$Port)
    $output = $localhost+","+$hostname+","+$port+","+$sock.Connected
    $output
    $sock.Close()
}
catch {

    $output = $localhost+","+$hostname+","+$port+","+$sock.Connected
    $output

}
}

}

И я запускаю этот скрипт на 8 компьютере с компьютера1, используя:

Invoke-Command -ComputerName computer1,computer2 -FilePath F:\scripts\port-test.ps1

На первом компьютере (computer1 - машина, с которой я выполняю скрипт) я получил вывод, но на компьютере2 я получил:

Cannot find path '\\computer1\txtfiles' because it does not exist. 

    + CategoryInfo          : ObjectNotFound: (\\computer1\txt
   files:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

Почему Powershell не видит сетевой ресурс? Как я могу это исправить?

Ответы [ 3 ]

5 голосов
/ 15 августа 2011

Похоже на проблему двойного прыжка - http://blogs.technet.com/b/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx - в основном вы подключаетесь к одной машине, а затем пытаетесь получить доступ к другой машине.ваш токен kerberos считается недействительным, поскольку между исходной и конечной точками находится машина.

Какую ОС вы используете (исходная и целевая ОС относятся к CredSSP)?Если это Windows 2008 или Windows 7, и проблема двойная, вы, возможно, сможете, CredSSP, избежать этого - http://www.ravichaganti.com/blog/?p=1230

2 голосов
/ 14 ноября 2016

Если проблема не связана с контролем доступа, рассмотрите аналогичную проблему, с которой я столкнулся при копировании файлов на серверы с этой ошибкой:

Не удалось найти путь '\\ computer1 \ d $ \ path', так как он не существует.

Это работает после добавления Microsoft.PowerShell.Core\FileSystem:: перед именем файла:

copy-item "Microsoft.PowerShell.Core\FileSystem::\\computer1\d$\path\installer.msi" "Microsoft.PowerShell.Core\FileSystem::\\computer2\d$\path\installer.msi"
1 голос
/ 15 августа 2011

Редактировать:

Мне удалось воспроизвести это, и это может быть проблемой двойного прыжка.Я решил это в соответствии с инструкциями здесь:

http://blogs.msdn.com/b/clustering/archive/2009/06/25/9803001.aspx

(или ссылка, которую дал Мэтт)


Убедитесь, что computer2 и другие компьютеры способнычтобы увидеть эту долю.Если другие машины не могут увидеть общий ресурс в первую очередь, Powershell не может ничего сделать.

Для простой проверки выполните:

Invoke-Command -computer computer2 -script {dir \\computer1\txtfiles}
...