Всегда запускайте PowerShell ISE от имени администратора

10056
Deadly-Bagel

У меня Windows 10 и я запускаю некоторые команды PowerShell через COM-объект Outlook. Для этого требуется, чтобы PowerShell работал на том же уровне доступа (от имени администратора или пользователя), что и Outlook.

Так как мне нужно, чтобы PowerShell работал в качестве администратора для других компонентов, я настроил Outlook так, чтобы он всегда работал как администратор, без проблем. Проблема в том, что когда я открываю ISE, я не могу получить доступ к объектам Outlook.

Кажется, нет никакого способа установить ISE, чтобы всегда работать от имени администратора. Вкладка «Совместимость» отсутствует (хотя не в самой PowerShell?), А разделы реестра в ней ...Windows NT\AppCompatibilityничего не сделали. Я бы полностью отключил UAC, но, конечно, это невозможно в Windows 10, не перепутав кучу других вещей.

Есть идеи? И нет, я не испытываю особого желания каждый раз щелкать правой кнопкой мыши по значку, поскольку часто открываю сценарии напрямую.

ОБНОВЛЕНИЕ: Outlook жалуется, что не может индексироваться как администратор, и ISE не распознает мои сетевые диски как администратора, поэтому меньшее из двух зол просто запускается как пользователь. Кстати, вкладка Совместимость исчезла из PowerShell exe теперь тоже, благодаря Microsoft ...

3

2 ответа на вопрос

3
bentek

Вот 2 различных варианта, которые вы можете использовать для запуска ISE в качестве администратора:

  1. Вы можете создать / отредактировать ярлык для powershell_ise.exeисполняемого файла и отредактировать свойства для этого ярлыка Run as Administrator.

enter image description here

  1. Вы можете запустить PowerShell ISE с правами администратора Start-Process powershell_ise -verb RunAs.
Нет, это 2 разных варианта. bentek 9 лет назад 0
Обновленный ответ, чтобы уточнить это. bentek 9 лет назад 0
Я ценю усилия по улучшению ответа. Ramhound 9 лет назад 0
Это не решает проблему, как будто я открываю ISE, дважды щелкая сценарий, который ISE открывает как пользователь с ограниченными правами. Мне нужно было бы каждый раз открывать ISE из ярлыка. Кажется, что это направление, в котором движется Microsoft: вы можете сделать это таким образом, и это работает, но не так, как в Windows 7 / Server 2008 Deadly-Bagel 9 лет назад 0
Можете ли вы установить свойства скрипта для запуска от имени администратора? bentek 9 лет назад 0
Нет, скрипт - это просто файл, поэтому он не «запускается». Кроме того, я обнаружил, что если ISE запускается от имени администратора, вы не можете открывать сценарии на сетевых дисках. Он просто не узнает путь. У Windows 10 есть свои преимущества (особенно запуск четырех экранов), но я продолжаю сталкиваться с таким мусором, и это раздражает. Deadly-Bagel 8 лет назад 0
Вариант 1 доступен (или доступен сейчас) на Windows Server 2012 R2 с использованием Classic Shell. Похоже, что в меню «Пуск» Windows 10 нет ярлыков, но вы можете получить к ним доступ, когда программа запускается через ее значок. YetAnotherRandomUser 7 лет назад 0
1
EricO

Я столкнулся с этим спустя много месяцев после публикации, но я думаю, что мой комментарий полезен.

@ Deadly-Bagel Нет, скрипт - это просто файл, поэтому он не «запускается».

Хотя скрипт - это просто файл, он, безусловно, может содержать функции. Одну из этих функций можно настроить для запуска в качестве первого процесса в этом файле сценария. Эта функция может использоваться для определения того, работает ли текущий сеанс от имени администратора. Если это не так, он может самостоятельно подняться (при условии, что вошедший в систему пользователь имеет права администратора).

 function Use-RunAs {  # Check if script is running as Adminstrator and if not use RunAs  # Use Check Switch to check if admin   param([Switch]$Check)   $IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()`  ).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")   if ($Check) { return $IsAdmin }   if ($MyInvocation.ScriptName -ne "")  {  if (-not $IsAdmin)  {  try  {  $arg = "-file `"$($MyInvocation.ScriptName)`""  Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList $arg -ErrorAction 'stop'  }  catch  {  Write-Warning "Error - Failed to restart script with runas"  break  }  exit # Quit this session of powershell  }  }  else  {  Write-Warning "Error - Script must be saved as a .ps1 file first"  break  } }   Use-RunAs 

Я надеюсь, что это помогает вашей ситуации. Если нет, я был бы рад вернуться.

Это если вы выполняете скрипт, моя проблема была в том, что ISE открывается как пользователь при редактировании скрипта и поэтому было ограничено. Может сработать, если вы ограничитесь тестированием с F8 ... К сожалению, я обнаружил, что, когда ISE работает от имени администратора, он по какой-то причине теряет доступ ко всем моим сетевым дискам, и Outlook жаловался на то, что он является администратором, поэтому я удалил их как для пользователя, так и для пользователя. материал, который нуждается в проверке как администратор (большая часть), я просто копирую в консоль администратора. Сказав это, я думаю, что я по-другому использую этот скрипт, так что спасибо, что нашли время =) Deadly-Bagel 6 лет назад 0