Подтвердить что ты не робот

Как создать постоянные псевдонимы PowerShell

Я хочу создать alias для cmdlet, который не истекает после закрытия текущей сессии Powershell, скажем, у меня есть этот псевдоним:

C:\Users\Aymen> New-Alias Goto Set-Location

Это прекрасно создает псевдоним Goto, но я хочу использовать его даже после закрытия текущего сеанса, как я могу это достичь.

Примечание:

Справочная система PowerShell предлагает, чтобы я мог экспортировать псевдонимы, которые я создаю, и импортировать их в следующий раз, когда я открываю новый сеанс, на самом деле это не совсем то, что я ищу, поскольку существует прямой ясный способ сохранить псевдоним после создания его через разные сеансы

4b9b3361

Ответ 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 заблокированы. Чтобы включить их, откройте настройки → Обновление и безопасность → Для разработчиков. Выберите режим разработчика (может потребоваться перезагрузка). Selecting Developer Mode Windows 10.

Прокрутите вниз до раздела 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