我想创建一个cmdlet的别名,它不会在我关闭Powershell的当前会话后过期,假设我有这样的别名:

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

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

注意:

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


当前回答

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

notepad $PROFILE.CurrentUserAllHosts

它打开我的默认powershell配置文件(当前用户,所有主机)。我在这里找到的。

然后添加别名。例如,这是我的jupyter笔记本的别名jn(我讨厌每次都打印出笨重的jupyter笔记本):

Set-Alias -Name jn -Value C:\Users\words\Anaconda3\Scripts\jupyter-notebook.exe

其他回答

这是个人喜好的问题,但我更喜欢将我的别名存储在一个单独的文件中,并在概要文件中调用Import-Alias。

$profileDir = Split-Path $PROFILE -Parent
$profileFile = Join-Path $profileDir profile.ps1
$aliasFile = Join-Path $profileDir aliases.csv
New-Alias -Name npp -Value "C:\Program Files\Notepad++\notepad++.exe" -Description "Notepad++"
Export-Alias -Name npp -Path $aliasFile -Append
ise $profileFile

然后在ISE中,将这一行放到你的profile.ps1中

Import-Alias -Path (Join-Path $PSScriptRoot aliases.csv)

2018年,Windows 10

您可以在一个简单的PowerShell脚本的帮助下链接到任何文件或目录。

正在编写文件快捷方式脚本

打开Windows PowerShell ISE。在脚本窗格中写入:

New-Alias ${shortcutName} ${fullFileLocation}

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

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

正在编写目录快捷方式脚本

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

function ${nameOfFunction} {set-location ${directory_location}}
New-Alias ${shortcut} ${nameOfFunction} 

其余部分完全相同。

启用PowerShell脚本

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

向下滚动到PowerShell部分,勾选“更改执行策略…”选项,然后应用。

提供最简单的解决方案:

打开powershell notepad $ phome \ profile .ps1:

函数Goto() { #函数名为别名,命令集为函数体 Set-Location } 3.保存并退出记事本 4. 设置powershell权限:Set-ExecutionPolicy -ExecutionPolicy remotessigned 5. 重新启动powershell并写入goto

更新- 2021年1月

它可以存储在配置文件中。每次PowerShell启动时,将在ps1文件中执行PowerShell代码。至少有6个不同的路径来存储代码,这取决于哪个用户必须执行它。我们将只考虑其中的两个:“所有用户”和“仅您的用户”路径(参见前面的链接了解更多选项)。

要回答您的问题,您只需要创建一个概要文件。包含你想要执行的代码的Ps1文件,即:

New-Alias Goto Set-Location

并保存在正确的路径:

"$Home\Documents"(通常是C:\Users\<yourname>\Documents):只有你的用户才能执行代码。这是推荐的位置 您可以通过在PowerShell中运行echo $profile快速找到您的配置文件位置 $ phome (C:\Windows\System32\WindowsPowerShell\v1.0):每个用户都会执行这段代码

重要提示:请记住,您需要重新启动PowerShell实例才能应用更改。

TIPS

If both paths contain a profile.ps1 file, the all-users one is executed first, then the user-specific one. This means the user-specific commands will overwrite variables in case of duplicates or conflicts. Always put the code in the user-specific profile if there is no need to extend its execution to every user. This is safer because you don't pollute other users' space (usually, you don't want to do that). Another advantage is that you don't need administrator rights to add the file to your user-space (you do for anything in C:\Windows\System32). If you really need to execute the profile code for every user, mind that the $PsHome path is different for 32bit and 64bit instances of PowerShell. You should consider both environments if you want to always execute the profile code. The paths are: C:\Windows\System32\WindowsPowerShell\v1.0 for the 64bit environment C:\Windows\SysWow64\WindowsPowerShell\v1.0 for the 32bit one (Yeah I know, the folder naming is counterintuitive, but it's correct).

创建profile1。PSL文件,输入以下命令:

新项目概要文件。CurrentUserAllHosts -ItemType file -Force

要访问文件,输入下面的命令:

伊势美元概要文件。CurrentUserAllHosts

注意,如果你以前没有这样做过,你会发现你不会 能够运行脚本是因为您的执行策略,您需要将其从受限(默认)更改为无限制。

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

Set-ExecutionPolicy -Scope CurrentUser

然后:

RemoteSigned

然后再次执行以下命令:

伊势美元概要文件。CurrentUserAllHosts

最后在脚本中输入您的别名,保存它,它们应该 每次运行powershell时都要运行,即使是在重新启动计算机之后。