Как запустить scriptblock в Windows PowerShell на 64-разрядной машине

#windows #powershell #64-bit

#Windows #powershell #64-разрядная

Вопрос:

Я хотел бы запустить блок сценариев, чтобы найти программное обеспечение, доступное в системе. Ниже приведен мой фрагмент кода.

 $scriptBlock = {
    $key = Get-ItemProperty 'HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall*' |
           Where-Object { $_.DisplayName -match 'Skype' };
    return $key
}

$installed64 = @(amp; "$env:SystemRootsysnativeWindowsPowerShellv1.0powershell.exe" -ExecutionPolicy Bypass -NoProfile -NonInteractive -Command $scriptBlock)
  

Когда я выполнил вышеуказанную команду на 64-разрядной машине, я получаю сообщение об ошибке как

amp; : Термин 'C:WINDOWSsysnativeWindowsPowerShellv1.0powershell.exe ' является 
не распознается как имя командлета, функции, файла сценария или рабочего 
программа. Проверьте правильность написания имени или, был ли указан путь, проверьте 
убедитесь, что путь указан правильно, и повторите попытку.
В строке: 1 символ: 20
  ... led64 = @(amp; "$env:SystemRootsysnativeWindowsPowerShell v1.0 powersh...
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Информация о категории: объект не найден: (C:WINDOWSsysn...powershell.exe:Строка) [], исключение CommandNotFoundException
   FullyQualifiedErrorId: исключение CommandNotFoundException

Я хотел бы запустить команду в «NT AUTHORITY SYSTEM» PowerShell.

Как я могу запустить scriptblock?

Комментарии:

1. $installed64 = amp; $scriptBlock ?

2. Ваша команда будет работать только из 32-разрядного экземпляра PowerShell. Вы запускаете его оттуда? Если нет, воспользуйтесь предложением @AnsgarWiechers.

3. @ mklement0 я хотел бы запустить scriptblock в NT AUTHORITY SYSTEM powershell

4. Почему? Это не должно требоваться ни при каких нормальных обстоятельствах.

5. @surendra, в качестве отступа: чтобы @ notifications были эффективными, между «@» и именем пользователя не должно быть пробелов. Пожалуйста, поясните в своем вопросе, почему вы хотели бы работать с этим идентификатором, и как ваше текущее сообщение об ошибке связано с этим намерением, в частности: вы вызываете это из 32-разрядного экземпляра PowerShell?