我想创建一个cmdlet的别名,它不会在我关闭Powershell的当前会话后过期,假设我有这样的别名:
C:\Users\Aymen> New-Alias Goto Set-Location
这完美地创建了Goto别名,但我想使用它,甚至在我关闭当前会话后,我如何实现这一点。
注意:
PowerShell帮助系统建议我可以导出我创建的别名,并在下次我打开一个新会话时导入它们,实际上这并不是我真正在寻找的,是否有一种直接清晰的方法来保持别名在我通过不同的会话创建它之后
我想创建一个cmdlet的别名,它不会在我关闭Powershell的当前会话后过期,假设我有这样的别名:
C:\Users\Aymen> New-Alias Goto Set-Location
这完美地创建了Goto别名,但我想使用它,甚至在我关闭当前会话后,我如何实现这一点。
注意:
PowerShell帮助系统建议我可以导出我创建的别名,并在下次我打开一个新会话时导入它们,实际上这并不是我真正在寻找的,是否有一种直接清晰的方法来保持别名在我通过不同的会话创建它之后
当前回答
更新- 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).
其他回答
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部分,勾选“更改执行策略…”选项,然后应用。
只是在这个可能的地点列表上加上…
这对我不起作用: 用户\ \{我}\ \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1文档
然而,这造成了: 用户\ \{我}\ OneDrive \ \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1文档
如果你没有配置文件,或者你想建立一个,运行下面的命令,它会创建必要的文件夹/文件,甚至告诉你它在哪里! 新建项目-path $profile -type file -force
创建profile1。PSL文件,输入以下命令:
新项目概要文件。CurrentUserAllHosts -ItemType file -Force
要访问文件,输入下面的命令:
伊势美元概要文件。CurrentUserAllHosts
注意,如果你以前没有这样做过,你会发现你不会 能够运行脚本是因为您的执行策略,您需要将其从受限(默认)更改为无限制。
为此,关闭脚本,然后键入以下命令:
Set-ExecutionPolicy -Scope CurrentUser
然后:
RemoteSigned
然后再次执行以下命令:
伊势美元概要文件。CurrentUserAllHosts
最后在脚本中输入您的别名,保存它,它们应该 每次运行powershell时都要运行,即使是在重新启动计算机之后。
这有点花哨…但它是有效的:
步骤1:创建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's 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
第二步:打开tools ~/Documents/tools/profile.ps1:
function Do-ActualThing {
# do actual thing
}
Set-Alias MyAlias Do-ActualThing
步骤3:
$ Set-ExecutionPolicy -Scope CurrentUser无限制 . ./install_profile.ps1
我发现我可以运行这个命令:
notepad $PROFILE.CurrentUserAllHosts
它打开我的默认powershell配置文件(当前用户,所有主机)。我在这里找到的。
然后添加别名。例如,这是我的jupyter笔记本的别名jn(我讨厌每次都打印出笨重的jupyter笔记本):
Set-Alias -Name jn -Value C:\Users\words\Anaconda3\Scripts\jupyter-notebook.exe