2014-01-25 4 views
4

У меня есть сценарий, который определяет идентификатор пользователя, после того как я получил этот идентификатор пользователя, я хочу запустить блок сценария с этим идентификатором пользователя, используя разные учетные данные. Это возможно? Может ли кто-нибудь показать мне примеры этого? Я ценю это. Спасибо заранее. :-)Запустить ScriptBlock с разными учетными данными

+0

«запустите блок сценариев против этого пользователя», что это значит? См. Параметр 'Credential' [Invoke-Command] (http://technet.microsoft.com/en-us/library/hh849719.aspx) –

+0

Я имею в виду, что я хочу запустить код с этим идентификатором пользователя в качестве параметра. Для eaxample: invoke-command -scriptblock {код для запуска против userid} -credential $ cred. Благодарю. – Bill

ответ

9

Я получил его, благодаря Тревору Салливану за то, что указал мне в правильном направлении. Я в конечном итоге просто положить свой второй ps1 файл в ScriptBlock, и запустить его в работу, и передавая ей аргументы из основного сценария, как этот

$job = Start-Job -scriptblock { 
param ($username) 
some code to run against the variable that was passed in 
} -Args $target -credential $Cred 

$ цели является переменной я хочу передать в мой ScriptBlock. $ имя пользователя, являющееся параметром, который принимает сценарий.

+2

Как я уже недавно пробовал, стоит упомянуть, используйте «Получить-Job $ job -Wait», чтобы дождаться завершения задания и получения выходов/ошибок из этого задания. –

+0

Для тех, кто сталкивается с проблемами с параметром '-Credential', он должен быть типа [' PSCredential'] (https://msdn.microsoft.com/en-us/library/system.management.automation.pscredential% 28v = vs.85% 29.aspx? F = 255 & MSPPError = -2147217396) – JamesQMurphy

+0

@SuneetNangia Что такое параметр -Wait? В моей PowerShell его не принимали, и я не мог найти его в «get-help receive-job -full». – Kaffee

0

Контекст безопасности для сеанса устанавливается при инициализации сеанса. Вы не можете произвольно запускать команды в другом контексте в сеансе. Для запуска в другом контексте безопасности (набор учетных данных) вам необходимо инициализировать новый сеанс под этими учетными данными и запустить его там.

Если вы посмотрите на справку для Invoke-Command, вы заметите, что параметр -Credential действителен только в наборах параметров, которые определяют удаленный сеанс с помощью имени, uri или сеанса. Вы также можете использовать -credential с Start-Job, который будет запускать команду в новом сеансе на локальном компьютере.

Смежные вопросы