Powershell — запросить переменную для добавления в команду

Я очень нуб с powershell и всем подобным, если честно.

Я пытаюсь создать простой пакетный файл для выполнения и упростить разблокировку учетных записей пользователей.

В настоящее время мне удалось создать ниже на основе поиска в Google, это просто разблокирует учетную запись пользователя с именем «ИМЯ ПОЛЬЗОВАТЕЛЯ».

powershell -Command "& { import-module activedirectory; unlock-adaccount USERNAME }"

Чего я пытаюсь добиться, так это установить эту часть «ИМЯ ПОЛЬЗОВАТЕЛЯ» в качестве переменной и создать подсказку при выполнении командного файла, чтобы запросить имя пользователя, чтобы иметь возможность разблокировать любую введенную учетную запись.

Я пробовал искать похожие сообщения, но не могу найти способ собрать их вместе. Я был бы признателен за любую помощь, которая может быть предложена!

Спасибо.


person Bulbasaur    schedule 04.12.2014    source источник


Ответы (3)


Используйте команду Read-Host, например:

PowerShell -Command "& {$username = Read-Host "Enter username"; Import-Module ActiveDirectory; Unlock-ADAccount $username}"
person Keith Hill    schedule 05.12.2014

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

powershell -Command "& { import-module activedirectory; Show-Command unlock-adaccount }"

Он откроет небольшой графический интерфейс и позволит вашим администраторам ввести имя пользователя или любые другие параметры, которые вы определяете в своих командах.

person kevmar    schedule 06.12.2014

Попробуйте написать повторно используемые инструменты. Простые функции и скрипты.

Вызов различных команд из PowerShell.exe будет работать только для конкретного сценария, для которого вы их написали. Функции и сценарии можно использовать везде, где это имеет смысл. Напишите что-то один раз, используйте это во многих местах. Это сэкономит огромное количество времени и поможет вам изучить и улучшить свои навыки работы с PowerShell.

Вот быстрый пример! Сохраните этот код как C:\Unlock-ADAccountSimple.ps1.

param (
    $Username = (Read-Host "Enter Username")
)

Import-Module ActiveDirectory
Unlock-ADAccount $Username

Теперь вы можете использовать это в своем сценарии. Это запросит имя пользователя:

PowerShell.exe -File C:\Unlock-ADAccountSimple.ps1

Вы также можете запустить его для конкретного пользователя:

PowerShell.exe -File C:\Unlock-ADAccountSimple.ps1 -Username jdoe

Вы можете использовать его в сценариях, которые вы пишете

#Inside a script, you could run it like this, with various logic before or after:
& "C:\Unlock-ADAccountSimple.ps1" -Username Someone

В дальнейшем вы можете написать более интересные и полезные функции и объединить их в более крупные решения. Но вам нужно с чего-то начинать, и создание небольших повторно используемых инструментов (функций/скриптов) поможет вам в этом!

Удачи!

person Cookie Monster    schedule 05.12.2014
comment
Я также хочу отметить, что использование [Parameter(Mandatory = $true)]$Username создаст тот же эффект. - person kevmar; 06.12.2014