Я пытаюсь передать параметры вложенной работе.
$executepath = "D:\nttools\CoreAutomation\$patch.zipfilename\$ntupdatefilename"
$sb = {Start-Job -Name $NTUpdate -ScriptBlock {& cmd.exe /c $executepath}}
Invoke-Command -Session $NTSession -ScriptBlock $sb -ArgumentList $executepath
С этим выводом, показывающим, что команда фактически не отображает параметр в строке:
State : Running
PSComputerName : LKS.nt.isg.local
RunspaceId : 8a1c9cc2-1cd0-42a6-a1d0-89d977aabf04
HasMoreData : True
StatusMessage :
Location : localhost
Command : & cmd.exe /c $executepath
JobStateInfo : Running
InstanceId : 9e95c0d8-d177-4a1a-9283-56f07ff5f0a8
Id : 1
Name : Job1
ChildJobs : {System.Management.Automation.PSRemotingChildJob}
PSJobTypeName : BackgroundJob
PSBeginTime : 5/9/2017 2:00:49 PM
PSEndTime :
Я попытался добавить эти параметры в блок сценария с тем же результатом:
$executepath = "D:\nttools\CoreAutomation\$patch.zipfilename\$ntupdatefilename"
$sb = {Start-Job -Name $NTUpdate -ScriptBlock {param($executepath) & cmd.exe /c $executepath} -ArgumentList $executepath}
Invoke-Command -Session $NTSession -ScriptBlock $sb -ArgumentList $executepath
State : Running
PSComputerName : LKS.nt.isg.local
RunspaceId : 7e039382-d8a6-4298-9983-8f3f6fd2a6c3
HasMoreData : True
StatusMessage :
Location : localhost
Command : param($executepath) & cmd.exe /c $executepath
JobStateInfo : Running
InstanceId : 77e80c13-2801-4726-81f4-8c960319cd0b
Id : 1
Name : Job1
ChildJobs : {System.Management.Automation.PSRemotingChildJob}
PSJobTypeName : BackgroundJob
PSBeginTime : 5/9/2017 2:08:38 PM
PSEndTime :
Обновлено:
Пробовал то, что было указано в комментариях. Не повезло, тот же результат.
$executepath = "D:\nttools\CoreAutomation\$patch.zipfilename\$ntupdatefilename"
$sb = {param($executepath) Start-Job -Name NTUpdate -ScriptBlock {param($executepath) & cmd.exe /c $executepath} -ArgumentList $executepath}
Invoke-Command -Session $NTSession -ScriptBlock $sb -ArgumentList $executepath
State : Running
PSComputerName : LKS.nt.isg.local
RunspaceId : 7b7b86df-a216-494e-b7e7-2336e6994a06
HasMoreData : True
StatusMessage :
Location : localhost
Command : param($executepath) & cmd.exe /c $executepath
JobStateInfo : Running
InstanceId : 4d5dd307-2158-4b38-b118-987f1e56cb12
Id : 1
Name : NTUpdate
ChildJobs : {System.Management.Automation.PSRemotingChildJob}
PSJobTypeName : BackgroundJob
PSBeginTime : 5/9/2017 2:25:19 PM
PSEndTime :
Обновление 2 – $using:executepath
Invoke-Command -Session $NTSession -ScriptBlock {Start-Job -Name NTUpdate -ScriptBlock {& cmd.exe /c $Using:executepath}}
Я пробовал с, и я получаю эту ошибку:
The value of the using variable '$using:executepath' cannot be retrieved because it has not been set in the local
session.
+ CategoryInfo : InvalidOperation: (:) [Start-Job], RuntimeException
+ FullyQualifiedErrorId : UsingVariableIsUndefined,Microsoft.PowerShell.Commands.StartJobCommand
+ PSComputerName : LKSNTADM01.nt.isg.local
Invoke-Command
вам нужно ссылаться на аргумент в блоке скрипта как$using:executepath
. - person Jeff Zeitlin   schedule 09.05.2017ZipFileName
объекта$patch
? Или$patch
это строка? Вы уверены, что$executepath
является допустимой строкой? - person TheMadTechnician   schedule 09.05.2017$patch
представляет собой хеш-таблицу.$ntupdatefilename
также является строкой. Строка в$executepath
правильно отображается за пределами блока скрипта. - person BilliAm   schedule 10.05.2017$executepath
и$patch
являются хеш-таблицами. Это был неправильный путь, НО это все еще не имеет значения в этом случае, поскольку он все равно должен показывать этот искаженный путь в значении свойства команды. - person BilliAm   schedule 10.05.2017Command
, если не команду, которую вы передаетеStart-Job
? - person user4003407   schedule 10.05.2017& cmd.exe /c D:\nttools\CoreAutomation\Defect1126511_CD_2017-04-24_1800_A\nttest_genlog.cmd
в команде, так как это то, что установлено в $executepath. Я не могу заставить блоки сценариев принимать параметры и отображать их, как показано. - person BilliAm   schedule 10.05.2017$using:
- person BilliAm   schedule 10.05.2017$executepath
, а не значение, которое оно установило. - person user4003407   schedule 10.05.2017