Как создать постоянные псевдонимы PowerShell
Я хочу создать alias на cmdlet это не истекает после закрытия текущего сеанса Powershell, допустим, у меня есть этот псевдоним:
C:UsersAymen> New-Alias Goto Set-Location
это прекрасно создает Goto псевдоним, но я хочу использовать его, даже после закрытия текущей сессии, как я могу добиться этого.
Примечание:
справочная система PowerShell предполагает, что я могу экспортировать псевдонимы, которые я создаю, и импортировать их в следующий раз, когда я открываю новый сеанс, на самом деле это не совсем то, что я ищу, есть ли прямой ясный способ сохранить псевдоним после того, как я создам его через разные сеансы
7 ответов:
обновлено-январь 2017
можно хранить в
profile.ps1файл любой код powershell, который будет выполняться при каждом запуске powershell. Есть хотя бы 6 различных путей где хранить код в зависимости от того, какой пользователь должен его выполнить. Мы можем рассмотреть только 2 из них: "все пользователи" и "только пользователя" пути.поэтому, чтобы ответить на ваш вопрос, вам нужно только создать
profile.ps1файл, содержащий код, который вы хотите быть исполнено, то естьNew-Alias Goto Set-Locationи сохранить его в правильном пути:
"$Home\Documents"(C:\Users\yourname\Documents): только ваш пользователь будет выполнять код.$PsHome(C:\Windows\System32\WindowsPowerShell\v1.0): каждый пользователь будет выполнять код.чтобы применить изменения, закройте все открытые экземпляры powershell и перезапустите их.
советы
если оба пути содержать
profile.ps1file сначала выполняется all user one, а затем пользователи.всегда помещайте код в профиль конкретного пользователя, если нет необходимости расширять его выполнение для каждого пользователя. Вам не нужны права администратора, чтобы добавить файл в пользовательское пространство (в противном случае вы это делаете), и вы не загрязняете пространство других пользователей.
помните! The
$PsHomeпуть отличается между 32-битными и 64-битными экземплярами powershell, поэтому вы необходимо учитывать обе среды, если вы хотите всегда выполнять код профиля. Как правило, на путиC:\Windows\System32\WindowsPowerShell\v1.0для 64-битной среды иC:\Windows\SysWow64\WindowsPowerShell\v1.0для 32-битного.
это не очень хорошая идея, чтобы добавить такого рода вещи непосредственно к вашей
$env:WINDIRпапки powershell.
Рекомендуется добавить его в свой личный профиль:cd $env:USERPROFILE\Documents md WindowsPowerShell -ErrorAction SilentlyContinue cd WindowsPowerShell New-Item Microsoft.PowerShell_profile.ps1 -ItemType "file" -ErrorAction SilentlyContinue powershell_ise.exe .\Microsoft.PowerShell_profile.ps1теперь добавьте свой псевдоним в файл Microsoft.PowerShell_profile. ps1, который теперь открыт:
function Do-ActualThing { # do actual thing } Set-Alias MyAlias Do-ActualThingзатем сохраните его и обновите текущий сеанс с помощью:
. $profile
просто добавить в этот список возможных мест...
Это не сработало для меня:
\Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1однако это сделал:
\Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1Если у вас нет профиля или вы хотите его настроить, запустите следующую команду, она создаст необходимую папку/файлы и даже скажет вам, где она живет!
New-Item -path $profile -type file -force
для создания профайла1.файл PSL, введите следующую команду:
new-item $PROFILE.CurrentUserAllHosts-ItemType file-Force
получить доступ к файлу, введите следующую команду:
Ино $профиль.CurrentUserAllHosts
Примечание если вы не делали этого раньше, вы увидите, что вы не будете возможность запуска скрипта из-за вашей политики выполнения, которую вам нужно изменить Неограниченный от ограниченного (по умолчанию).
для этого закройте скрипт и введите эту команду:
Set-ExecutionPolicy-Scope CurrentUser
затем:
RemoteSigned
затем эта команда снова:
Ино $профиль.CurrentUserAllHosts
затем, наконец, введите псевдонимы в скрипт, сохраните его, и они должны запускать каждый раз при запуске PowerShell, даже после перезагрузка компьютера.
2018, Windows 10
вы можете ссылаться на любой файл или каталог с помощью простого сценария PowerShell.
написание сценария быстрого доступа к файлу
откройте Windows PowerShell ISE. В области скриптов напишите:
New-Alias ${shortcutName} ${fullFileLocation}затем перейдите на панель командной строки. Найдите свой адрес профиля пользователя PowerShell с помощью
echo $profile. Сохраните скрипт по этому адресу.скрипт в PowerShell в анкете адресу будет выполняться каждый раз, когда вы открыть PowerShell. Ярлык должен работать с каждым новым окном PowerShell.
написание сценария быстрого доступа к каталогу
для этого требуется еще одна строка в нашем скрипте.
function ${nameOfFunction} {set-location ${directory_location}} New-Alias ${shortcut} ${nameOfFunction}остальные точно такие же.
Включить Сценарии PowerShell
по умолчанию сценарии PowerShell заблокированы. Чтобы включить их, откройте Настройки -> Обновление и безопасность -> для разработчики. Выберите режим разработчика (может потребоваться перезагрузка).
.
прокрутите вниз до раздела PowerShell, отметьте " изменить политику выполнения ... вариант " и "применить".
все, что люди сказали выше, это здорово, но не забудьте не слишком усложнять свой файл Profile.ps1. Например, вы можете сделать это в файле Profile. ps1:
#all you already have in your profile.ps1 file #then call a file to initialize your aliases #It could look like this. C:\Users\{ME}\Documents\WindowsPowerShell\setAliases.ps1запустится файл, который должен выглядеть примерно так:
#Set aliases: function global:YourAliasFunction { #What you want your alias to do. } Set-Alias YourAlias YourAliasFunction -Scope "Global"Не забывайте "- scope "Global "" или этот псевдоним будет работать только в этом файле.
кроме того, не забывайте о "глобальных" перед именем функции по той же причине.
один и последнее, поскольку существует миллион функций, и вы не можете знать их все, вы должны попытаться начать свои псевдонимы и функции с чего-то, указывающего, что это ваше. Это позволяет избежать нежелательного копирования имени существующей функции. Например, вы можете сделать это, всегда добавляя что-то особенное в начале вашего псевдонима (например, ваши инициалы или подчеркивание _). Это будет выглядеть так:
Set-Alias ME_YourAlias ME_YourAliasFunction -Scope "Global"или
Set-Alias _YourAlias _YourAliasFunction -Scope "Global"затем, при следующем запуске, вы будете иметь YourAlias do YourAliasFunction.
удачи
простой. Например...
откройте окно Windows PowerShell и введите:
notepad $profileзатем создайте функцию, например:
function goSomewhereThenOpenGoogleThenDeleteSomething { cd C:\Users\ Start-Process -FilePath "http://www.google.com" rm fileName.txt }затем введите это под именем функции:
Set-Alias google goSomewhereThenOpenGoogleThenDeleteSomethingТеперь вы можете ввести слово "google" в Windows PowerShell и заставить его выполнить код в своей функции!




Comments