Могу ли я спросить Windows, какие разрешения мне нужны для выполнения действия?

Есть ли способ сказать: «Я собираюсь подать несколько команд, и если они не могут работать, выясните, почему, и исправьте это». В идеале это дало бы мне простой вариант (да / нет), чтобы исправить это (один раз или навсегда). Или какое-то переопределение, например, как должен работать запуск от имени администратора, который просто пропускает проверку всех разрешений? Или способ отключить проверку разрешений?

Что-то вроде этого:

C:> удалить принтер GHI

Вы не можете удалить принтер WXY, потому что 1) у вас нет разрешения XYZ, и 2) вы не являетесь участником группы WXY, 3) в очереди для принтера GHI находится 4394568 нераспечатанных заданий и 4) вы нет ABC для выполнения DEF и 5) ваш JKL установлен на MNO.

Хотели бы вы, чтобы Windows предоставила вам разрешение на XYZ, добавила вас в группу WXY и дала вам ABC для выполнения DEF, установила для JKL значение PQR и удалила 4 394 568 неотпечатанных заданий и удалила GHI принтера? [O / Y / N] ([O] ne раз, [Y] e постоянно, [N] o)? Y

Укажите имя пользователя и пароль администратора для домена GHI.

Имя пользователя: GHI / Администратор

Пароль: пароль

Принтер GHI удален. Хорошего дня.

C:>


person ggb667    schedule 07.11.2014    source источник
comment
stackoverflow.com/a/573861/775544   -  person Anthony Neace    schedule 08.11.2014
comment
Я не хотел писать об этом громкую тираду. Не уверен, хватит ли у меня терпения. @HyperAnthony, это отличная ссылка. Все субъективно. PowerShell может быть мощным инструментом. Как и все остальное, если вы знаете, как это исправить, вы можете заставить его делать почти все. Он действительно пытается помочь людям с переходом от CMD. Вы не можете сесть в машину и просто ожидать, что она сработает. Вы должны знать, как ее водить.   -  person Matt    schedule 08.11.2014
comment
Какой у Вас вопрос?   -  person Bryan Oakley    schedule 08.11.2014
comment
PowerShell совсем не похож на bash или cmd. Это больше похоже на python или perl, т.е. это интерпретируемый PL для Windows. В PS 4.0 есть довольно впечатляющие командлеты. PS 5.0 позволит вам писать свои собственные классы (без Add-Type). Плюс такие вещи, как рабочие процессы, плюс модули для AD и Exchange. Я не уверен, чего вы ожидали, но PS - это лучшее, что случилось с Windows со времен ядра NT.   -  person Alexander Obersht    schedule 08.11.2014
comment
Ха Брайан, я думал, что спросил, но я поставил более подробный вопрос внизу. Думаю, это действительно превратилось в тираду.   -  person ggb667    schedule 12.11.2014
comment
Тип функциональности, которую я описал, - это то, что я действительно хочу, и это то, на что я надеялся от инструмента под названием POWER SHELL. Это не способ пытаться вызывать команды и получать их дюжину отвергнутых.   -  person ggb667    schedule 12.11.2014


Ответы (1)


Чтобы получить возможности редактирования истории и командной строки, как в Bash, ознакомьтесь с модулем PSReadline. PowerShell уже имеет неплохое завершение табуляции, но PSReadline делает его лучше.

Кстати, PowerShell - это не столько работа с API, сколько работа с объектами. Управлять принтерами довольно просто:

8> Get-Printer

Name                           ComputerName    Type         DriverName                PortName        Shared   Publishe
                                                                                                               d
----                           ------------    ----         ----------                --------        ------   --------
Send To OneNote 2013                           Local        Send to Microsoft OneN... NUL:            False    False
Quicken PDF Printer                            Local        Amyuni Document Conver... NUL:            False    False
Microsoft XPS Document Writer                  Local        Microsoft XPS Document... PORTPROMPT:     False    False
HP Photosmart 7520                             Local        HP Photosmart 7520 ser... 192.168.1.127_1 False    False
hp LaserJet 1300 PCL 5                         Local        hp LaserJet 1300 PCL 5    DOT4_001        True     False
Fax                                            Local        Microsoft Shared Fax D... SHRFAX:         False    False

9> Remove-Printer 'Microsoft XPS Document Writer'
Remove-Printer : Access was denied to the specified resource.
At line:1 char:1
+ Remove-Printer 'Microsoft XPS Document Writer'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (MSFT_Printer (N...= "", Type = 0):ROOT/StandardCimv2/MSFT_Printer) [R
   emove-Printer], CimException
    + FullyQualifiedErrorId : HRESULT 0x80070005,Remove-Printer

Справедливо по поводу наличия более полезных сообщений об ошибках. Это то, в чем продукт улучшается, например:

10> Invoke-Command -ComputerName . {Get-Service spooler}
[localhost] Connecting to remote server localhost failed with the following error message : The client cannot connect
to the destination specified in the request. Verify that the service on the destination is running and is accepting
requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly
IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and
configure the WinRM service: "winrm quickconfig". For more information, see the about_Remote_Troubleshooting Help
topic.
    + CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : CannotConnect,PSSessionStateBroken
person Keith Hill    schedule 08.11.2014
comment
Все еще слишком больно, но принято. Спасибо. - person ggb667; 12.11.2014