Как создать постоянные псевдонимы PowerShell
Я хочу создать alias
для cmdlet
, который не истекает после закрытия текущей сессии Powershell, скажем, у меня есть этот псевдоним:
C:\Users\Aymen> New-Alias Goto Set-Location
Это прекрасно создает псевдоним Goto
, но я хочу использовать его даже после закрытия текущего сеанса, как я могу это достичь.
Примечание:
Справочная система PowerShell предлагает, чтобы я мог экспортировать псевдонимы, которые я создаю, и импортировать их в следующий раз, когда я открываю новый сеанс, на самом деле это не совсем то, что я ищу, поскольку существует прямой ясный способ сохранить псевдоним после создания его через разные сеансы
Ответы
Ответ 1
ОБНОВЛЕНО - январь 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.ps1
, сначала выполняется все пользовательское, а затем конкретные пользователи.
-
Всегда помещайте код в профиль пользователя, если нет необходимости продлевать его выполнение для каждого пользователя. Вам не нужны права администратора, чтобы добавить файл в ваше пространство пользователя (в противном случае вы это сделаете), и вы не будете загрязнять пространство других пользователей.
-
ПОМНИТЕ! Путь $PsHome
отличается между 32-битным и 64-битным экземплярами powershell, поэтому вам нужно рассмотреть обе среды, если вы хотите всегда выполнять код профиля. Обычно пути C:\Windows\System32\WindowsPowerShell\v1.0
для 64-битной среды и C:\Windows\SysWow64\WindowsPowerShell\v1.0
для 32-битного.
Ответ 2
Не рекомендуется добавлять подобные вещи прямо в ваши папки с файлами $env:WINDIR
.
Рекомендуемый способ - добавить его в свой личный профиль:
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
Ответ 3
2018, Windows 10
Вы можете связать любой файл или каталог с помощью простого скрипта PowerShell.
Написание сценария ярлыка файла
Откройте Windows PowerShell ISE. В панели скриптов напишите:
New-Alias ${shortcutName} ${fullFileLocation}
Затем перейдите на панель командной строки. Найдите свой профиль пользователя PowerShell с помощью профиля echo $profile
. Сохраните скрипт в этом адресе.
![enter image description here]()
Сценарий в адресе профиля PowerShell будет запускаться каждый раз, когда вы открываете PowerShell. Ярлык должен работать с каждым новым окном PowerShell.
Написание сценария быстрого доступа к каталогу
Это требует другой строки в нашем скрипте.
function ${nameOfFunction} {set-location ${directory_location}}
New-Alias ${shortcut} ${nameOfFunction}
В остальном точно так же.
![enter image description here]()
Включить скрипты PowerShell
По умолчанию скрипты PowerShell заблокированы. Чтобы включить их, откройте настройки → Обновление и безопасность → Для разработчиков. Выберите режим разработчика (может потребоваться перезагрузка).
.
Прокрутите вниз до раздела PowerShell, установите флажок "Изменить политику выполнения..." и примените.
![Enabling PowerShell scripts]()
Ответ 4
Просто чтобы добавить к этому списку возможных мест...
Это не сработало для меня:
\Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Однако это произошло:
\Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Если у вас нет профиля или вы хотите его установить, выполните следующую команду, он создаст необходимую папку и файлы и даже скажет вам, где она живет!
New-Item -path $profile -type file -force
Ответ 5
Просто. Например...
Откройте окно 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 и заставить его выполнять код в вашей функции!
Ответ 6
чтобы создать файл profile1.psl, введите следующую команду:
файл нового элемента $ PROFILE.CurrentUserAllHosts -ItemType -Force
чтобы получить доступ к файлу, введите следующую команду:
ise $ PROFILE.CurrentUserAllHosts
обратите внимание, что если вы не сделали этого раньше, вы увидите, что не сможете запустить сценарий из-за своей политики выполнения, которую нужно изменить на Неограниченный с Ограниченный (по умолчанию).
чтобы сделать это, закройте скрипт и затем введите эту команду:
Set-ExecutionPolicy -Scope CurrentUser
затем:
RemoteSigned
тогда эта команда снова:
ise $ PROFILE.CurrentUserAllHosts
затем, наконец, введите псевдонимы в сценарии, сохраните их, и они должны запускаться каждый раз, когда вы запускаете powershell, даже после перезагрузки компьютера.
Ответ 7
Это немного необычно... но это работает:
Шаг первый: создайте профиль Powershell:
FILE: install_profile.ps1
# THIS SCRIPT BLOWS AWAY YOUR DEFAULT POWERSHELL PROFILE SCRIPT
# AND INSTALLS A POINTER TO A GLOBAL POWERSHELL PROFILE
$ErrorActionPreference = "Stop"
function print ([string]$msg)
{
Write-Host -ForegroundColor Green $msg
}
print ""
# User Powershell Profile
$psdir = "$env:USERPROFILE\Documents\WindowsPowerShell"
$psfile = $psdir + "\Microsoft.PowerShell_profile.ps1"
print "Creating Directory: $psdir"
md $psdir -ErrorAction SilentlyContinue | out-null
# this is your auto-generated powershell profile to be installed
$content = @(
"",
". ~/Documents/tools/profile.ps1",
""
)
print "Creating File: $psfile"
[System.IO.File]::WriteAllLines($psfile, $content)
print ""
# Make sure Powershell profile is readable
Set-ExecutionPolicy -Scope CurrentUser Unrestricted
затем в инструменты ~/Documents/tools/profile.ps1:
function Do-ActualThing {
# do actual thing
}
Set-Alias MyAlias Do-ActualThing
Шаг 3:
$ Set-ExecutionPolicy -Scope CurrentUser Неограниченный $. . /install_profile.ps1