Мой клиент контролирует доступ к своей базе данных с помощью ActiveDirectory. Я бы хотел сделать следующее:
$cred = Get-Credential
Start-Job -Credential $cred {
#do some stuff with the db
}
Это отлично работает для любого локального пользователя, но при использовании VPN и вводе моих учетных данных ActiveDirectory это не может пройти аутентификацию.
Я знаю что могу использовать runas
запускать процессы как пользователь ActiveDirectory, только если я предоставлю /netonly
флаг (иначе не работает). Я думал, что следующее может помочь
$cred = (Get-Credential).GetNetworkCredential()
но получившийся объект не может быть преобразован в PsCredential
, а это то, что -Credential
параметр принимает.
Относится к этот вопрос на SO но, похоже, я спрашивал не то.
Если вы пытаетесь выполнять SQL-запросы интегрированной безопасности, вы мощь уметь делать это с помощью модуля олицетворения. Я не пробовал SQL, но есть сообщение о том, как использовать модуль олицетворения PowerShell для доступа к сетевому ресурсу в моем блоге, и я считаю, что это те же сетевые учетные данные, которые вам нужны для SQL-сервера (например, такие же, как при использовании runas с / netonly).
Если вы просто используете задание, потому что думали, что оно позволит вам изменить учетные данные для доступа к сети, тогда просто избавьтесь от этого и используйте вместо этого Push-ImpersonationContext. если ты необходимость задание по какой-то другой причине, тогда вам нужно вызвать Push-ImpersonationContext внутри работы, что означает, что вам необходимо ввести свои учетные данные в задание (возможно, путем сериализации пароля и передачи его в виде зашифрованной безопасной строки).
Я не могу протестировать это прямо сейчас (у меня нет под рукой домена или даже сервера db), поэтому, ммм ... дайте мне знать, если это не сработает;)