如何创建永久PowerShell别名

Aym*_*udi 107 powershell

我想创建一个aliascmdlet不到期后,我关闭的PowerShell当前会话,让我们说我有这个别名:

C:\Users\Aymen> New-Alias Goto Set-Location
Run Code Online (Sandbox Code Playgroud)

这完美地创建了Goto别名,但我想在关闭当前会话后使用它,我该如何实现.

注意:

PowerShell帮助系统建议我可以导出我创建的别名,并在下次打开新会话时导入它们,实际上这并不是我真正想要的,因为有没有直接清晰的方法来保持别名后我通过不同的会话创建它

Nai*_*gel 86

更新 - 2017年1月

profile.ps1PowerShell启动时,可以在文件中存储要执行的任何powershell代码.根据哪个用户必须执行代码,存在至少6个不同的路径来存储代码.我们只能考虑其中的两个:"所有用户"和"仅用户"路径.

因此,要回答您的问题,您只需要创建一个profile.ps1包含您要执行的代码的文件,即

New-Alias Goto Set-Location
Run Code Online (Sandbox Code Playgroud)

并将其保存在正确的路径中:

  • "$Home\Documents" (C:\ Users\yourname\Documents):只有您的用户才能执行代码.
  • $PsHome (C:\ Windows\System32\WindowsPowerShell\v1.0):每个用户都将执行代码.

要应用更改,请关闭所有打开的powershell实例并重新启动它们.

提示

  • 如果两个路径都包含profile.ps1文件,则首先执行所有用户,然后执行特定用户.

  • 如果不需要将代码扩展到每个用户,请始终将代码放在用户特定的配置文件中.您不需要管理员权限即可将文件添加到用户空间(否则可以),并且不会污染其他用户的空间.

  • 记得!$PsHomepowershell的32位和64位实例之间的路径不同,因此如果您想要始终执行配置文件代码,则必须考虑这两种环境.通常路径C:\Windows\System32\WindowsPowerShell\v1.0适用于64位环境和C:\Windows\SysWow64\WindowsPowerShell\v1.032 位环境.

  • 获取配置文件位置的最佳方法可能是在PowerShell窗口中运行"echo $ profile". (31认同)
  • 没错,它只是没有用,我不确定这是否是权限问题.我确实让它工作(我应该先评论).我必须创建文件夹`\ Users\{ME}\Documents\WindowsPowerShell`然后添加`Microsoft.PowerShell_profile.ps1`非其他路径适合我. (7认同)
  • 嗨@Naigel,我必须使用这种方法才能使它工作:http://superuser.com/questions/516700/bash-aliases-equivalent-for-powershell 所以我的最终解决方案是为配置文件创建文件:`New -Item -path $profile -type file -force` 创建文件夹和文件`Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1` (4认同)
  • 请记住备份您的 profile.ps1 文件,因为 Windows Creators Update 似乎在其默认位置清除了该文件! (4认同)
  • 根据使用“ $ HOME \ Documents \ WindowsPowerShell”和命名为“ Microsoft.PowerShell_profile.ps1”的链接文章,将范围限制为非ISE和当前主机,但不应该是权限问题(与“”相同) $ Home \ Documents \ profile.ps1“应该适用。)。可能并非如此,我将尝试一下,谢谢您提供的信息 (2认同)

Cha*_*ell 82

将这种东西直接添加到您的$env:WINDIRpowershell文件夹中并不是一个好主意.
建议的方法是将其添加到您的个人资料中:

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
Run Code Online (Sandbox Code Playgroud)

现在将您的别名添加到现在打开的Microsoft.PowerShell_profile.ps1文件中:

function Do-ActualThing {
    # do actual thing
}

Set-Alias MyAlias Do-ActualThing
Run Code Online (Sandbox Code Playgroud)

然后保存它,并使用以下命令刷新当前会话:

. $profile
Run Code Online (Sandbox Code Playgroud)

  • 为了允许执行我的配置文件脚本,我不得不做一个额外的步骤.以管理员身份运行Powershell,并执行`Set-ExecutionPolicy RemoteSigned -Scope CurrentUser`.`-Scope`选项使它更安全一些. (6认同)
  • 这是一个很好的方法!请注意,该函数本身也可以在 shell 中使用,因此您实际上并不需要 Set-Alias 部分。只需调用函数“MyAlias”。另外,要传递参数,请使用`@Args`,例如`function gs { git status @Args }` (3认同)
  • @Automatico我喜欢明确地讲解Set-Alias,因为我喜欢使用具有适当动词的适当PS约定来命名我的方法。但是,是的,如果您不挑剔,则可以随意命名您要调用的方法。 (2认同)

Ben*_*arp 18

2018年,Windows 10

您可以借助简单的PowerShell脚本链接到任何文件或目录.

编写文件快捷方式脚本

打开Windows PowerShell ISE.在脚本窗格中写道:

New-Alias ${shortcutName} ${fullFileLocation}
Run Code Online (Sandbox Code Playgroud)

然后转到命令行窗格.找到您的PowerShell用户配置文件地址echo $profile.将脚本保存在此地址中.

在此输入图像描述

PowerShell的配置文件地址中的脚本将在每次打开PowerShell时运行.该快捷方式应适用于每个新的PowerShell窗口.

编写目录快捷方式脚本

它需要我们脚本中的另一行.

function ${nameOfFunction} {set-location ${directory_location}}
New-Alias ${shortcut} ${nameOfFunction} 
Run Code Online (Sandbox Code Playgroud)

其余的完全相同.

在此输入图像描述

启用PowerShell脚本

默认情况下,PowerShell脚本被阻止.要启用它们,请打开设置 - >更新和安全 - >对于开发人员.选择开发者模式(可能需要重启). 选择开发者模式Windows 10.

向下滚动到PowerShell部分,勾选"更改执行策略..."选项,然后应用.

启用PowerShell脚本

  • `echo $profile` 是一个很棒的提示,可以帮助找到添加文件的正确位置。感谢您的全面回答 (3认同)

wor*_*ise 13

我发现我可以运行这个命令:

notepad $PROFILE.CurrentUserAllHosts
Run Code Online (Sandbox Code Playgroud)

它会打开我的默认 powershell 配置文件(对于当前用户、所有主机)。我发现这里

然后添加别名。例如,这是我的jnfor别名(我讨厌每次都jupyter notebook输入繁琐的内容):jupyter notebook

Set-Alias -Name jn -Value C:\Users\words\Anaconda3\Scripts\jupyter-notebook.exe
Run Code Online (Sandbox Code Playgroud)


gol*_*ams 9

只是添加到这个可能的位置列表......

这不适合我: \Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

但是这样做了: \Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

如果您没有配置文件或者您想要设置一个配置文件,请运行以下命令,它将创建必要的文件夹/文件,甚至告诉您它的位置! New-Item -path $profile -type file -force


Ste*_*rne 6

简单。例如...

打开Windows PowerShell窗口并键入:

notepad $profile
Run Code Online (Sandbox Code Playgroud)

然后创建一个函数,例如:

function goSomewhereThenOpenGoogleThenDeleteSomething {
    cd C:\Users\
    Start-Process -FilePath "http://www.google.com"
    rm fileName.txt
}
Run Code Online (Sandbox Code Playgroud)

然后在函数名称下键入:

Set-Alias google goSomewhereThenOpenGoogleThenDeleteSomething
Run Code Online (Sandbox Code Playgroud)

现在,您可以在Windows PowerShell中键入单词“ google”,并使其在您的函数中执行代码!

  • 这绝对是所提供的最简单的解决方案。 (3认同)

小智 5

要创建profile1.psl文件,请键入以下命令:

new-item $ PROFILE.CurrentUserAllHosts -ItemType file -Force

要访问该文件,请键入以下命令:

ise $ PROFILE.CurrentUserAllHosts

请注意,如果您之前没有这样做,您将看到由于执行策略而无法运行脚本,您需要将其更改为Unrestricted from Restricted(默认值).

为此,请关闭脚本,然后键入以下命令:

Set-ExecutionPolicy -Scope CurrentUser

然后:

下RemoteSigned

然后这个命令再次:

ise $ PROFILE.CurrentUserAllHosts

然后最后在脚本中输入别名,保存它们,并且每次运行powershell时它们都应该运行,即使在重新启动计算机之后也是如此.

  • 你可能想要:`Set-ExecutionPolicy RemoteSigned`.不要推荐"Unrestricted".来源:http://www.itprotoday.com/management-mobility/running-powershell-scripts-easy-1-2-3 (3认同)