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



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



C:UsersAymen> New-Alias Goto Set-Location


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



Примечание:



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

983   7  

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.ps1 file сначала выполняется 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. Сохраните скрипт по этому адресу.

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

все, что люди сказали выше, это здорово, но не забудьте не слишком усложнять свой файл 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

    Ничего не найдено.