4

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

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

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

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

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

2 ответа2

3

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

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

  1. Вы можете запустить PowerShell ISE как администратор с помощью Start-Process powershell_ise -verb RunAs .
1

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

@ 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .