Ошибки удаленной копии New-PsDrive из общей папки DFS: указанный сеанс входа не существует

Итак, резюмируя ситуацию: я на одном компьютере пытаюсь запустить powershell с помощью enter-pssession computername, а затем из удаленного сеанса запускаю следующую логику:

$DFSPath = "\\DFSpath.com"
$RDL1 = [char](1+[char](gdr ?)[-1].name)
New-PSDrive -Name $RDL1 -PSProvider FileSystem -Root $DFSPath -Persist -credential domain\UN

get-variable правильно показывает переменные. Но когда я пытаюсь создать с помощью New-PSDrive, это дает:

New-PSDrive : A specified logon session does not exist. It may already have
been terminated

Я просмотрел это: PowerShell 2.0: доступ к общим ресурсам Windows во время удаленного сеанса, но не смог заставить его работать. Также я не знаю, как это реализовать в моем сценарии выше (который будет запускаться на нескольких компьютерах). Есть что новее? Я использую powershell v3. Большое спасибо!


person 1BilliumDollars    schedule 11.09.2013    source источник
comment
Я только что нашел это здесь: blogs.msdn.com/b/powershell/archive/2008/06/05/ . Таким образом, кажется, что сеанс запущен и запущен, но обычно он показывает имя компьютера в командной строке. Итак, я начинаю копировать файлы, как мне нужно, и они просто копируются из общей папки на мой компьютер. Спасибо!   -  person 1BilliumDollars    schedule 11.09.2013
comment
О, я не врубался в | новая сессия. Спасибо БобЛобЛоу! Это ответ на мою проблему. Теперь мне нужно понять, как добавить его в скрипт :).   -  person 1BilliumDollars    schedule 11.09.2013


Ответы (1)


Судя по всему, вы столкнулись со страшным "Двойной прыжок". Если вы хотите удаленно подключиться только к нескольким компьютерам, довольно легко настроить «исправление» для «двойного перехода». На компьютерах, к которым вы хотите удаленно подключиться, необходимо выполнить следующие команды:

Enable-PSRemoting

Enable-WSManCredSSP Server

Затем на компьютере, с которого вы хотите удалить, вам нужно выполнить команду:

Enable-WSManCredSSP Client –DelegateComputer [<FQDN of the server>][*]

Вместо полного доменного имени вы можете поставить *. Это позволит вам отправить свои учетные данные на любой компьютер (это может быть опасно).

Теперь, как бы вы превратили это в сценарий? Есть команда под названием Invoke-Command. Если вы посмотрите на параметры Get-Help Invoke-Command -Parameter *, то увидите, что для этого требуются Учетные данные и Аутентификация. Вот как вы можете запустить команду на нескольких компьютерах.

$MyCred = Get-Credential
Invoke-Command -ComputerName Computer1,Computer2 -Credential $MyCred -Authentication Credssp -ScriptBlock {Get-ChildItem $args[0]} -ArgumentList '\\Server\Share' -ErrorAction SilentlyContinue

Теперь, если вы будете удаленно работать со многими машинами и знаете, как использовать групповую политику. Я бы рекомендовал настроить PSRemoting и включение WSManCred с помощью групповой политики.

person E.V.I.L.    schedule 11.09.2013
comment
Большое спасибо! Судя по всему, я не смогу использовать GPO. Возможно, мне просто нужно запустить скрипт локально. Жаль, что вы не можете сделать Enable-WSMAn CredSSP Server -file C:\computernames.txt со списком, как вы можете это сделать с клиентом. - person 1BilliumDollars; 12.09.2013
comment
жаль вторая ссылка битая. - person рüффп; 21.06.2021