2016-11-17 2 views
0

Я просто не могу заставить это работать, и я не могу понять, как это сделать. аналогичный скрипт работает удаленно, но теперь мне нужно заставить его работать локально. Но ... Пожалуйста, проверьте скрипт ...Invoke-Command Powershell не принимает переменную для параметра -ComputerName

Function Local-Install { 
$ComputerName = "$env:computername" 
$AppName = "Deployment" 

Invoke-Command -ComputerName $ComputerName ,$AppName -ScriptBlock ` 
{ 
param ($ComputerName,$AppName) 
write-host "Getting Parameters for '$AppName' on $ComputerName"} 
$Application = Get-WmiObject -computername $ComputerName -Namespace "root\ccm\ClientSDK" -Class CCM_Application | where {$_.Name -like "$AppName"} | Select-Object Id, Revision, IsMachineTarget 
$AppID = $Application.Id 
$AppRev = $Application.Revision 
$AppTarget = $Application.IsMachineTarget 
([wmiclass]'ROOT\ccm\ClientSdk:CCM_Application').Install($AppID, $AppRev, $AppTarget, 0, 'Normal', $False) 
} 

и я получаю сообщение об ошибке, как это:

Invoke-Command : One or more computer names are not valid. If you are trying to pass a URI, use the -ConnectionUri parameter, or pass URI objects ins 
tead of strings. 
At line:5 char:1 
+ Invoke-Command -ComputerName $ComputerName ,$AppName -ScriptBlock ` 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (System.String[]:String[]) [Invoke-Command], ArgumentException 
    + FullyQualifiedErrorId : PSSessionInvalidComputerName,Microsoft.PowerShell.Commands.InvokeCommandCommand 

Exception calling "Install" : "" 
At line:13 char:1 
+ ([wmiclass]'ROOT\ccm\ClientSdk:CCM_Application').Install($AppID, $AppRev, $AppTa ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : WMIMethodException 
+0

Похоже, синтаксис $ ComputerName просто не действует. Можете ли вы попробовать распечатать, к чему привязана переменная? – louahola

+0

Я добавил запись в хост после параграфа, но не получил никакого разрешения, но после запуска сценария вложенного пишущего узла «Получение параметров для« $ AppName »на $ ComputerName» Получение параметров для «Развертывания» на WX0000 –

+0

I верю, что я понял, нет переменных потребности над командой invoke, просто добавили его в раздел параметров как строки –

ответ

0

Поскольку это локальная можно просто запустить «ENV: COMPUTERNAME» вызов в метод. Тем не менее, если вы хотите получить эту работу, как есть, вам просто нужно добавить -ArgumentList аргумент вызова Invoke-Command:

Invoke-Command -ComputerName $ComputerName, $AppName -ArgumentList $ComputerName, $AppName -ScriptBlock ` 
+0

Если я понимаю, что ваш подлинный скрипт должен выглядеть так? 'Функция Локальная установка { $ Имя_компьютера =" $ env: имя_компьютера " $ AppName =" Развертывание " Invoke-Command -ComputerName $ Имя_компьютера, $ AppName -ArgumentList $ Имя_компьютера $ AppName -ScriptBlock' {other lines} ' –

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