Итак, вот код, который у меня есть:
$computerName = read-host "Enter Computer Name"
$IPCName = read-host "Enter IPC Profile name"
$uName = read-Host "Enter SU account"
$pw = read-host "Password"
$pwe = convertto-securestring -AsPlainText -Force -String $pw
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "CHILDRENS\$uName",$pwe
[string]$ipcdevcmd="FREEFORMDEVICENAME=`"$IPCName`""
[string]$tftp1='TFTP1="10.200.254.69"'
[string]$tftp2='TFTP2="172.16.90.205"'
$arrayofargs= ('/i','C:\IPCommunicator\CiscoIPCommunicatorSetup.msi','/qn',$ipcdevcmd,$tftp1,$tftp2)
$rtn = Test-Connection -CN $computerName -Count 1 -BufferSize 16 -Quiet
IF($rtn -match 'TRUE'){
echo 'machine Pings'
$session = New-PSSession -ComputerName $computerName -credential $cred
echo 'Testing Path'
$path = Invoke-Command -Session $session {Test-Path C:\IPCommunicator}
IF($path -match "False"){
echo "Need to make Directory"
Invoke-Command -Session $session {mkdir C:\IPCommunicator}
robocopy C:\IPCommunicator \\$computername\C$\IPCommunicator /MIR
echo 'Files Copied to New Directory'
}
ELSE {
robocopy C:\IPCommunicator \\$computername\C$\IPCommunicator /MIR
echo 'Files Copied to Existing Directory'
}
echo 'invoking install'
Invoke-Command -Session $session {Start-Process msiexec.exe -argumentlist $arrayofargs}
echo 'install invoked'
}
ELSE {
echo 'unable to ping system'
}
read-host "Press enter"
Что я получаю в ответ: вызов install (для справки) "Невозможно проверить аргумент параметра ArgumentList. Аргумент нулевой или пустой.Укажите аргумент, который не является нулевым или пустым, и повторите команду. "вызов вызван (для справки)
Я думаю, что происходит то, что он пытается использовать локальные переменные машины вместо предоставленных пользователем переменных в исходной ячейке.Вся цель состоит в том, чтобы запустить установку, которая предварительно устанавливает определенные переменные через аргументы MSI.Они действительны и из пакета с я могу сделать это на локальном ПК просто отлично.Когда я пытаюсь передать эти переменные с МОГО компьютера, на котором выполняется скрипт, на компьютер пользователя с помощью команды invoke, он не видит мои локально установленные переменные.Как, черт возьми, я передаю их.
Разбитый сам по себе ...
... возвращает мои входные данные для каждого из аргументов правильно, в правильной строковой форме.Каким-то образом это теряется в команде invoke.: / не знаете, как передать эти переменные?Должен ли я писать в текст, а затем переместить файл и загрузить его из локального pssession?Должен быть лучший способ!