0

Я написал сценарий, который должен быть подключен к нескольким удаленным серверам, которые не находятся в домене. Конечной целью является использование Invoke-Command для создания запланированной задачи на удаленных серверах.Пароль для получения пароля «Null»

$name = $server."Name"; 
$cred = Get-Credential "$name\admin"; 

Он вызывает приглашение открыть и вводит пароль администратора. Но когда я звоню:

Invoke-Command -ComputerName $addr -Script $Script1 -Credential $cred 

Терминал запрашивает UserId.

Если имя пользователя вводится снова эта ошибка Дано:

Cannot validate argument on parameter 'Password'. The argument is null or empty. 
Provide an argument that is not null or empty, and then try the command again. 
    + CategoryInfo   : InvalidData: (:) [Register-ScheduledTask], ParameterBindingValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Register-ScheduledTask 
    + PSComputerName  : 10.110.0.25

Сценарий Я бегу это:

$Script1 = {Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force -Confirm:$False; $A=New-ScheduledTaskAction -Execute "powershell.exe" -argument "-file C:\PSWU\Shared\ps.ps1"; $p=New-ScheduledTaskPrincipal -RunLevel Highest ; $C=New-ScheduledTask -Action $A -Principal $p ; Register-ScheduledTask T1 -InputObject $C -Password $SecurePassword;} 
+1

Ваша ошибка происходит от некоторой команды в '$ Script1' сценарий, но не показывать. – PetSerAl

+0

Я обновил сообщение, чтобы включить скрипт. Я считаю, что ошибка исходит от команды New-ScheduledTaskPronciple. – Lambda42

ответ

0

Кажется, проблема здесь есть $Script вот ScriptBlock и его в своем собственном объеме. Поэтому он не имеет значения для переменной $SecurePassword.

использование Param($SecurePassword) внутри блока сценария и передать оригинальный флакон $SecurePassword-ArgumentList параметр Invoke-Command

Ниже приведен пример.

$Script = {param($r);"r is $r"} 
Invoke-Command -ScriptBlock $Script -ArgumentList 'Value for r' 

независимо от переменных, которые имеют доступ внутри ScriptBlock либо должны быть определены в стороне ScriptBlock или должны быть переданы в качестве аргумента для Invoke-Command

Если вы используете блок скрипта в скрипт, который локально работает, вы можете использовать переменную область видимости. более

информация на Get-Help about_Script_Blocks

здесь тоже: https://technet.microsoft.com/en-us/library/hh847893.aspx

С уважением,

Kvprasoon

+0

Спасибо, сейчас я изучаю функцию param. – Lambda42

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

  • Нет связанных вопросов^_^