如何创建永久PowerShell别名

6l7fqoea  于 2022-11-29  发布在  Shell
关注(0)|答案(9)|浏览(133)

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

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

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

备注:

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

nimxete2

nimxete21#

更新日期-2021年1月

可以将每次启动PowerShell时要执行的任何PowerShell代码存储在profile.ps1文件中。至少有6 different paths个位置可以存储代码,具体取决于要执行代码的用户。我们将只考虑其中的两个位置:“所有用户”和“仅您的用户”路径(请访问上一个链接以了解更多选项)。
要回答您的问题,只需创建一个包含要执行的代码的profile.ps1文件,即:

New-Alias Goto Set-Location

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

  • "$Home\Documents"(通常为C:\Users\<yourname>\Documents):只有您的使用者会执行程式码。这是建议的位置 * 您可以在PowerShell中执行echo $profile,快速找到您的设定档位置 *
  • $PsHomeC:\Windows\System32\WindowsPowerShell\v1.0):每个用户都将执行此代码
    重要提示:请记住,您需要重新启动PowerShell示例以应用更改。
    提示
  • 如果两个路径都包含一个profile.ps1文件,则首先执行所有用户的文件,然后执行特定于用户的文件。这意味着如果出现重复或冲突,特定于用户的命令将覆盖变量。
  • 如果不需要将代码的执行扩展到每个用户,则始终将代码放在用户特定的配置文件中。这样做更安全,因为您不会污染其他用户的空间(通常,您不希望这样做)。

另一个优点是,您不需要管理员权限就可以将文件添加到用户空间(您可以在C:\Windows\System32中执行任何操作)。

  • 如果您确实需要为每个用户执行配置文件代码,请注意32位和64位PowerShell示例的$PsHome路径是不同的。如果您希望始终执行配置文件代码,则应考虑这两种环境。

路径包括:

  • C:\Windows\System32\WindowsPowerShell\v1.0(适用于64位环境)
  • C:\Windows\SysWow64\WindowsPowerShell\v1.0为32位(是的,我知道,文件夹命名是违反直觉的,但it's correct)。
rjzwgtxy

rjzwgtxy2#

直接将这种东西添加到您的$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

**注意:**以防万一,如果您获得了

类别信息:安全性错误:(:)[],PS安全异常+完全限定错误ID:未经授权的访问
请尝试以下命令并再次刷新会话。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
jgzswidk

jgzswidk3#

打开Windows PowerShell窗口并键入:

notepad $profile

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

function goSomewhereThenOpenGoogleThenDeleteSomething {
    cd C:\Users\
    Start-Process -FilePath "http://www.google.com"
    rm fileName.txt
}

然后在函数名称下键入以下内容:

Set-Alias google goSomewhereThenOpenGoogleThenDeleteSomething

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

wa7juj8i

wa7juj8i4#

2018年,Windows 10操作系统
您可以借助简单的PowerShell脚本链接到任何文件或目录。

编写文件快捷方式脚本

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

New-Alias ${shortcutName} ${fullFileLocation}

然后进入命令行窗格,找到您的PowerShell用户配置文件地址echo $profile,将脚本保存在该地址中。

PowerShell设定档位址中的指令码会在您每次开启PowerShell时执行。捷径应该可以在每个新的PowerShell windows 中使用。

编写目录快捷方式脚本

它需要脚本中的另一行。

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

其余的完全一样。

启用PowerShell脚本

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


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

weylhg0b

weylhg0b5#

在这张可能的地点名单上再加上...
这对我不起作用:\Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
然而,这样做了:\Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
如果您没有配置文件或者您想建立一个配置文件,运行以下命令,它将创建必要的文件夹/文件,甚至告诉您它所在的位置!New-Item -path $profile -type file -force

hiz5n14c

hiz5n14c6#

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

notepad $PROFILE.CurrentUserAllHosts

它打开了我的默认Powershell配置文件(对于当前用户,所有主机)。我找到了那个here
然后添加一个别名。例如,下面是我为jupyter notebook创建的别名jn(我讨厌每次都输入繁琐的jupyter notebook):

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

14ifxucb7#

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

新项目$PROFILE.当前用户所有主机-项目类型文件-强制

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

伊势$PROFILE.当前用户所有主机

  • 注意 * 如果您以前没有这样做过,您会发现由于您的执行策略(您需要将其从“受限”(默认)更改为“不受限”),您将无法运行脚本。

要执行此操作,请关闭脚本,然后键入以下命令:

设置执行策略作用域当前用户

然后:

远程签名

然后再次执行以下命令:

伊势$PROFILE.当前用户所有主机

然后最后在脚本中键入别名,保存它,它们应该在每次运行powershell时运行,甚至在重新启动计算机后也是如此。

qmelpv7a

qmelpv7a8#

这是一个有点花哨...但它的工作:

**步骤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

**步骤2:**然后在tools ~/Documents/tools/profile.ps1中:

function Do-ActualThing {
    # do actual thing
}

Set-Alias MyAlias Do-ActualThing

步骤3:

$设置-执行策略-作用域当前用户不受限制$ . ./install_profile.ps1

hxzsmxv2

hxzsmxv29#

这是一个个人品味的问题,但我更喜欢将我的别名一起存储在一个单独的文件中,并在配置文件中调用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

然后在伊势中,将此行放入您的配置文件中。ps1

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

相关问题