Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] invoke-command ошибка авторизации (http://forum.oszone.net/showthread.php?t=352399)

Loki3D 16-11-2022 19:19 2996635

invoke-command ошибка авторизации
 
На Computer1 выполняю скрипт.

Код:

$RS=new-pssession -computername 'Computer2'
invoke-command -session $RS -ScriptBlock {
  Get-ChildItem -Path '\\Computer3\c$\tmp'
}

на выходе получаю ошибку.
Код:

Access is denied
    + CategoryInfo          : PermissionDenied: (\\Computer3\C$\tmp:String) [Get-ChildItem], UnauthorizedAccessException
    + FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
    + PSComputerName        : Computer2

Cannot find path '\\--\C$\BASE\TEST8\SERVER\AdminToolKit\Server' because it does not exist.
    + CategoryInfo          : ObjectNotFound: (\\Computer3\C$\tmp:String) [Get-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
    + PSComputerName        : Computer2

Учетная запись, под которой выполняется скрипт имеет права локального администратора на всех трех машинах.
Путь существует, и доступен.

пробовал добавлять авторизацию - не помогает.
Код:

$RS=new-pssession -computername 'Computer2' -Credential $myCred
Буду раз услышать любые версии и предложения :)

DJ Mogarych 16-11-2022 19:45 2996636

Попробуйте так:
Код:

invoke-command -computername 'Computer2' -ScriptBlock {
  Get-ChildItem -Path '\\Computer3\c$\tmp'
}


Loki3D 16-11-2022 20:58 2996647

DJ Mogarych, к сожалению, та же самая ошибка

Foreigner 17-11-2022 00:29 2996664

А путь точно должен быть в таком виде? Если вы открыли сессию, значит вы уже оказались в окружении 'Computer2'. Попробуйте с обычными путями:

Код:

$RS=new-pssession -computername 'Computer2'
invoke-command -session $RS -ScriptBlock { Get-ChildItem -Path 'C:\tmp'}


Loki3D 17-11-2022 10:45 2996675

Foreigner, К сожалению для моей задачи требуется удаленый вызов кода на Computer2, где требуется обращение к файлам на Computer3

YuS_2 17-11-2022 14:28 2996685

Цитата:

Цитата Loki3D
Буду раз услышать любые версии и предложения »

Чтобы запускать команды на удаленной машине, надо быть уверенным, что все необходимые условия выполнены...
Цитата:

Перед выполнением Invoke-Command команд на удаленном компьютере прочитайте about_Remote.
Ну и здесь ещё есть подробные инструкции...

Loki3D 17-11-2022 19:43 2996738

Я нашел решение.
Гуглится по PowerShell Second-Hop и Enable-WSMaCredSSP
Причина ошибки доступа изложена Здесь.
По соображениям безопаности Вашы учетные данные не наследуются и не делегируются при обращении с удаленной машины к другой удаленной машине.
Мой случай и его решение описаны Здесь

Важно в открытии сесси обязательно передавать учетные данные и указать метод авторизации.

В итоге на Computer1 выполняем
Код:

Enable-WSManCredSSP -Role Client -DelegateComputer 'Computer2', 'Computer3' -Force
На Computer2 и Computer3
выплоняем
Код:

Enable-WSManCredSSP -Role Server -Force
Код:

$Pas=ConvertTo-SecureString 'password' -AsPlainText -Force
$cred=New-Object System.Management.Automation.PSCredential ('MyLogin', $Pas)

$RS=new-pssession -computername 'Computer2' -Credential $cred -Authentication Credssp
invoke-command -session $RS -ScriptBlock {
  Get-ChildItem -Path '\\Computer3\c$\tmp'
}



Время: 23:52.

Время: 23:52.
© OSzone.net 2001-