我想创建一个cmdlet的别名,它不会在我关闭Powershell的当前会话后过期,假设我有这样的别名:
C:\Users\Aymen> New-Alias Goto Set-Location
这完美地创建了Goto别名,但我想使用它,甚至在我关闭当前会话后,我如何实现这一点。
注意:
PowerShell帮助系统建议我可以导出我创建的别名,并在下次我打开一个新会话时导入它们,实际上这并不是我真正在寻找的,是否有一种直接清晰的方法来保持别名在我通过不同的会话创建它之后
我想创建一个cmdlet的别名,它不会在我关闭Powershell的当前会话后过期,假设我有这样的别名:
C:\Users\Aymen> New-Alias Goto Set-Location
这完美地创建了Goto别名,但我想使用它,甚至在我关闭当前会话后,我如何实现这一点。
注意:
PowerShell帮助系统建议我可以导出我创建的别名,并在下次我打开一个新会话时导入它们,实际上这并不是我真正在寻找的,是否有一种直接清晰的方法来保持别名在我通过不同的会话创建它之后
当前回答
这是个人喜好的问题,但我更喜欢将我的别名存储在一个单独的文件中,并在概要文件中调用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部分,勾选“更改执行策略…”选项,然后应用。
只是在这个可能的地点列表上加上…
这对我不起作用: 用户\ \{我}\ \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1文档
然而,这造成了: 用户\ \{我}\ OneDrive \ \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1文档
如果你没有配置文件,或者你想建立一个,运行下面的命令,它会创建必要的文件夹/文件,甚至告诉你它在哪里! 新建项目-path $profile -type file -force
这有点花哨…但它是有效的:
步骤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
提供最简单的解决方案:
打开powershell notepad $ phome \ profile .ps1:
函数Goto() { #函数名为别名,命令集为函数体 Set-Location } 3.保存并退出记事本 4. 设置powershell权限:Set-ExecutionPolicy -ExecutionPolicy remotessigned 5. 重新启动powershell并写入goto
创建profile1。PSL文件,输入以下命令:
新项目概要文件。CurrentUserAllHosts -ItemType file -Force
要访问文件,输入下面的命令:
伊势美元概要文件。CurrentUserAllHosts
注意,如果你以前没有这样做过,你会发现你不会 能够运行脚本是因为您的执行策略,您需要将其从受限(默认)更改为无限制。
为此,关闭脚本,然后键入以下命令:
Set-ExecutionPolicy -Scope CurrentUser
然后:
RemoteSigned
然后再次执行以下命令:
伊势美元概要文件。CurrentUserAllHosts
最后在脚本中输入您的别名,保存它,它们应该 每次运行powershell时都要运行,即使是在重新启动计算机之后。