Вызов команд Powershell в python2.7 [duplicate]

Мне нужен контекст для использования фрагмента arrayAdapter IN, когда я использовал ошибку getActivity, но когда я заменяю его getContext, он работает для меня

listView LV=getView().findViewById(R.id.listOFsensors);
LV.setAdapter(new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1 ,listSensorType));
14
задан Tamás Szelei 1 August 2011 в 18:00
поделиться

2 ответа

Во-первых, Set-ExecutionPolicy Unrestriced используется для каждого пользователя, а базис на битность (32-бит отличается от 64-битного).

Во-вторых, вы можете переопределить политику выполнения из команды line.

psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
                             '-ExecutionPolicy',
                             'Unrestricted',
                             './buildxml.ps1',
                             arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()

По-видимому, вы можете получить доступ к 64-битной PowerShell из 32-разрядной PowerShell с помощью этого пути (спасибо @eryksun в комментариях):

powershell64 = os.path.join(os.environ['SystemRoot'], 
    'SysNative' if platform.architecture()[0] == '32bit' else 'System32',
    'WindowsPowerShell', 'v1.0', 'powershell.exe')
15
ответ дан JasonMArcher 20 August 2018 в 11:29
поделиться
  • 1
    Вау, это здорово, спасибо! На самом деле, я просто понял, что проблема связана с печально известной файловой системой для Windows 7 x64. (У меня была политика Unrestricted в версии x64, но не в x86, и python не перенаправлял ее). – Tamás Szelei 1 August 2011 в 18:45
  • 2
    Я не совсем уверен, как назвать исполняемый файл подобным образом с помощью подпроцесса, но просто для того, чтобы уточнить, является ли «./buildxml.ps1» фактическая команда, которая вызывается? – someone-or-other 29 December 2013 в 22:24
  • 3
    @ some-or-other buildxml.ps1 - файл сценария powershell, а исполняемый файл (если это то, что вы подразумеваете под командой) - 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe'. Все элементы в следующем списке - это параметры, которые передаются этому исполняемому файлу. – Tamás Szelei 30 December 2013 в 15:23
  • 4
    поэтому, если вы хотите вызвать & ls & quot; (что является примером, который можно сделать с помощью «dir»), вы бы поставили это в одну из переменных arg? – someone-or-other 30 December 2013 в 23:19
  • 5
    Используйте виртуальный «SysNative». чтобы запустить собственный 64-разрядный системный исполняемый файл из 32-разрядной программы WOW64. Кроме того, не жестко скопируйте корневой каталог системы «C: \ Windows»; это не всегда, где установлена ​​Windows. Я бы использовал powershell64 = os.path.join(os.environ['SystemRoot'], 'SysNative' if platform.architecture()[0] == '32bit' else 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe'). – eryksun 16 December 2016 в 12:23

Для тех из нас, кто хотел узнать, как отображать значения arg1, arg2 и arg3 после того, как он был передан в powershell, вам нужно всего лишь:

Write-Host $args[0]
Write-Host $args[1]
Write-Host $args[2]
0
ответ дан Steve Davis 20 August 2018 в 11:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: