Могу ли я выполнить определенную строку скрипта в 64-битной оболочке и вернуть результат в текущий сеанс 32-битной оболочки? - PullRequest
1 голос
/ 28 апреля 2020

Я пишу скрипт Powershell, который будет интегрирован в продукт, предназначенный для 32-битных Windows машин. Таким образом, при вызове он будет по умолчанию работать на x86 Powershell даже на 64-битных машинах. Одна из строк должна быть запущена на 64-битной оболочке для получения точных результатов. Попытка сделать это:

#Above this is the ongoing script in 32bit session
if ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64") {
    #write-warning "Excecuting the script under 64 bit powershell"
    if ($myInvocation.Line) {
        [System.IntPtr]::Size
        &"$env:systemroot\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile 
        #Statement block
    }else{
        &"$env:systemroot\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile  $args
        #Statement block
    }

}
#Below this is the remaining Script in 32 bit session

Я не могу передать поток управления в новый сеанс и забрать его обратно. Все, что он делает, это запускает 64-битную оболочку внутри уже запущенной 32-битной оболочки. Любой возможный способ сделать это, а также вернуть значения, напечатанные новой оболочкой?

1 Ответ

0 голосов
/ 28 апреля 2020

Я смог сделать это с помощью параметра -Command. Вызвать соответствующую оболочку (32 или 64) в зависимости от вашего варианта использования. Непосредственно передайте команду или полный блок скрипта внутри парантеза.

#Invoking the 64-bit Powershell shell 
& "$env:systemroot\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -Command 
{ 
# Statement Block  
}

Вывод может быть сохранен в переменной при необходимости. Родительская оболочка возобновляется после возвращения элемента управления.

Ознакомьтесь с другими примерами использования аргумента -Command в официальных документах здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...