установка MSI-файла с помощью powershell, вызывающая параметры командной строки - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь запустить приведенную ниже команду, и она открывает параметры установщика Windows, что я делаю не так?

$current_pc     = "$env:computername"
$filePath      = "c:\users\ArA\Desktop\parameters.csv"
$machineParams = Import-CSV $filePath
$info          = if($machineParams){$machineParams | where {$_.branch -eq $($current_pc.Substring($current_pc.length - 3,3))}}
                 else{write-output "CSV not loaded"}
$info

start-process msiexec.exe -Wait -ArgumentList /L* "c:\users\Ara\Desktop\t.log" /qn /I "c:\users\Ar\Desktop\setup.msi" DATABASE_ID=$($info.DATABASE_ID),ODBC_DATABASE_NAME=$($info.ODBC_DATABASE_NAME),ODBC_ENGINE_NAME=$($info.ODBC_ENGINE_NAME) ODBC_HOST_NAME=$($info.ODBC_HOST_NAME) NOLAN=1

1 Ответ

0 голосов
/ 11 мая 2018

Вероятно, как вы передаете свои аргументы.Рекомендуется использовать массив при передаче exe аргументов, чтобы они правильно интерпретировались:

$machineParams = Import-Csv -Path $Env:UserProfile\Desktop\parameters.csv
$info = if ($machineParams) {
    $machineParams |
        Where-Object { $_.branch -eq $Env:ComputerName.Substring($Env:ComputerName.Length - 3, 3) }
} else {
    'CSV not loaded.'
}

$info

$StartArgs = @{
    'Wait'         = $true
    'FilePath'     = "$Env:SystemRoot\System32\msiexec.exe"
    'ArgumentList' = @(
        '/i',"$Env:UserProfile\Desktop\setup.msi"
        '/qn'
        '/log',"$Env:UserProfile\Desktop\t.log"
    )
}
if ($info -ne 'CSV not loaded.') {
    $StartArgs['ArgumentList'] += @(
        "DATABASE_ID=$($info.DATABASE_ID)"
        "ODBC_DATABASE_NAME=$($info.ODBC_DATABASE_NAME)"
        "ODBC_ENGINE_NAME=$($info.ODBC_ENGINE_NAME)"
        "ODBC_HOST_NAME=$($info.ODBC_HOST_NAME)"
        'NOLAN=1'
    )
}
Start-Process @StartArgs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...