У меня типичная ошибка Keberos Double Hop. Я столкнулся с этим с простым кодом.
Я хотел перезапустить несколько серверов с удаленным рабочим столом с одного центрального сервера. Однако серверы, которые должны быть перезапущены, хранятся в файле csv на центральном сервере с их временем перезапуска. Как только я вызываю, я делаю первый прыжок со вторым прыжком, который мне нужен, чтобы прочитать csv, происходящий сразу после.
Я нашёл обходной путь, используя 2 сценария сплита. Но там я получаю ошибку
Invoke-Command: файл \ svkev01 \ C $ \ CSV \ Run2.ps1 не может быть загружен
потому что вы решили не запускать это программное обеспечение сейчас.
Я изменил GPO Global для разрешения на чтение и запуск каждого скрипта
Также я попытался с Политикой, неограниченной в Выполнении сценария, но это ничего не изменило.
Поэтому мне нужна ваша помощь
Код для воспроизведения:
Первая попытка (проблема двойного прыжка)
$listofserver = Import-Csv -Path "\\centralserver\servertorestart.csv" -UseCulture
Foreach ($server in $listofserver)
{
$servername = $server.name
#hop 1
Invoke-Command -ComputerName $servername -ScriptBlock{
#hop 2
$listofserver = Import-Csv -Path "\\centralserver\servertorestart.csv" -UseCulture
$servername = $server.name
[datetime]$tasktime = $server.time
$T = New-JobTrigger -Once -At $tasktime
Register-ScheduledJob -Name "Scheduled Server Restart" -Trigger $T -ScriptBlock{
Restart-Computer -ComputerName $servername
write-host "Server $servername restarded"
}
}
}
Dual Scripts (именуется ошибкой массаж)
Сценарий 1
Set-ExecutionPolicy unrestricted
$listofserver = Import-Csv -Path "\\centralserver\servertorestart.csv" -UseCulture
$servern = $listofserver.name
$s = New-PSSession -ComputerName $servern -Credential Domain\Administrator
Foreach ($server in $listofserver)
{
#hop 1
Invoke-Command -Session $s -FilePath "\\centralserver\Run2.ps1"
}
Сценарий 2
Set-ExecutionPolicy unrestricted
$listofserver = Import-Csv -Path "\\centralserver\servertorestart.csv" -UseCulture
Foreach ($server in $listofserver)
{
$servername = $server.name
[datetime]$tasktime = $server.time
$T = New-JobTrigger -Once -At $tasktime
Register-ScheduledJob -Name "Scheduled Server Restart" -Trigger $T -ScriptBlock{
Restart-Computer -ComputerName $servername -Force
write-host "Server $servername restarded"
}
}