영구 PowerShell 별칭을 만드는 방법


142

내가 만들 aliascmdlet내가 파워 쉘의 현재 세션을 닫은 후에 만료되지 않습니다를하자 내가이 별칭이 말 :

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

이것은 완벽하게 Goto별칭을 만들지 만 현재 세션을 닫은 후에도 별칭을 사용하고 싶습니다. 어떻게 달성 할 수 있습니까?

노트 :

PowerShell 도움말 시스템은 내가 만든 별칭을 다음에 새 세션을 열 때 가져올 수 있다는 사실을 제안합니다. 실제로 내가 찾고있는 것은 아닙니다. 실제로는 계속해서 별칭을 가질 수있는 명확한 방법이 있습니까? 다른 세션을 통해 그것을 만들


IMO 스크립트를 PATH에 넣는 것이 훨씬 좋습니다. 이렇게하면 열려있는 모든 쉘에서이 명령을 즉시 사용할 수 있으며, 변경하면 $ profile 또는 무언가를 다시로드하지 않고도 모든 후속 사용에 변경 사항이 전파됩니다.
masterxilo

답변:


112

업데이트 됨-2017 년 1 월

profile.ps1powershell이 ​​시작될 때마다 실행될 모든 powershell 코드를 파일 에 저장할 수 있습니다. 어떤 사용자가 코드를 실행해야하는지에 따라 코드를 저장할 경로6 가지 이상 있습니다. "모든 사용자"및 "사용자 만"경로 중 두 가지만 고려할 수 있습니다.

따라서 질문에 대답 profile.ps1하려면 실행하려는 코드가 포함 된 파일 만 작성하면 됩니다.

New-Alias Goto Set-Location

올바른 경로에 저장하십시오.

  • "$Home\Documents" (C : \ Users \ yourname \ Documents) : 사용자 만 코드를 실행합니다.
  • $PsHome (C : \ Windows \ System32 \ WindowsPowerShell \ v1.0) : 모든 사용자가 코드를 실행합니다.

변경 사항을 적용하려면 열려있는 모든 Powershell 인스턴스를 닫고 다시 시작하십시오.

  • 두 경로에 profile.ps1파일이 모두 포함되어 있으면 모든 사용자 경로가 먼저 실행 된 다음 사용자마다 다릅니다.

  • 각 사용자에게 실행을 확장 할 필요가없는 경우 항상 코드를 사용자 별 프로필에 넣으십시오. 파일을 사용자 공간에 추가하기 위해 관리자 권한이 필요하지 않으며 (그렇지 않은 경우) 다른 사용자 공간을 오염시키지 않습니다.

  • 생각해 내다! $PsHome당신이 프로필 코드를 실행하는 것이 원하는 경우 모두 환경을 고려해야하므로 경로, 파워 쉘의 32 비트 및 64 비트 인스턴스 사이에 다릅니다. 일반적으로 경로는 C:\Windows\System32\WindowsPowerShell\v1.064 비트 환경과 C:\Windows\SysWow64\WindowsPowerShell\v1.032 비트 환경을 위한 것입니다.


9
오류가 발생하지 않았습니다.이 권한 문제인지 확실하지 않습니다. 나는 실제로 그것을 작동시켰다 (나는 내가 이전에 주석을 달아야한다). 폴더 \Users\{ME}\Documents\WindowsPowerShell를 만든 다음 Microsoft.PowerShell_profile.ps1다른 경로 중 하나 를 추가해야 작동합니다.

2
링크 된 기사를 사용 "$HOME\Documents\WindowsPowerShell"하고 이름을 지정 Microsoft.PowerShell_profile.ps1하면 범위를 비 ISE 및 현재 호스트로 제한하지만 권한 문제 (와 동일 "$Home\Documents\profile.ps1" should apply) 해서는 안됩니다 . 어쩌면 그것은 정말 그렇게, 나는 그것을 시도 줄 것 아니에요, 정보 주셔서 감사합니다
Naigel

2
@Naigel 님, 안녕하세요. superuser.com/questions/516700/… 을 사용하려면이 방법을 사용해야합니다. 그래서 최종 솔루션은 프로필 파일을 만드는 New-Item -path $profile -type file -force것입니다. 폴더와 파일을 만들었습니다Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Eagle

57
프로필 위치를 얻는 가장 좋은 방법은 powershell 창에서 "echo $ profile"을 실행하는 것입니다.
Rahul Jha

2
Windows Creators Update가 기본 위치에서 파일을 지우는 것처럼 보이기 때문에 profile.ps1 파일을 백업해야합니다 !!
gooleem

109

이런 종류의 것을 $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

이제 열린 Microsoft.PowerShell_profile.ps1 파일에 별명을 추가하십시오.

function Do-ActualThing {
    # do actual thing
}

Set-Alias MyAlias Do-ActualThing

그런 다음 저장하고 다음을 사용하여 현재 세션을 새로 고치십시오.

. $profile

참고 : 권한 문제가 발생하는 경우를 대비하여

CategoryInfo : SecurityError : (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess

아래 명령을 시도하고 세션을 다시 새로 고치십시오.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

1
좋은 의견. 내 powershell에 터치가 없지만 매우 명확합니다.
JustinB

9
내 프로필 스크립트를 실행하려면 추가 단계를 수행해야했습니다. Powershell을 관리자로 실행하고를 실행하십시오 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. 이 -Scope옵션은 좀 더 안전합니다.
zombat

2
이것은 좋은 방법입니다! 함수 자체도 셸에서 사용할 수 있으므로 Set-Alias ​​부분이 실제로 필요하지 않습니다. 그냥 함수를 호출하십시오 MyAlias. 또한 인수를 전달하려면 다음을 사용하십시오 @Args.function gs { git status @Args }
Automatico

3
@Automatico 나는 Set-Alias적절한 동사와 함께 적절한 PS 규칙을 사용하여 메소드의 이름을 지정하기 때문에 명시 적 인 것을 좋아 합니다. 그러나 그렇습니다. 까다 롭지 않다면, 호출하려는 모든 방법으로 메소드 이름을 지정할 수 있습니다.
체이스 플 로렐

1
@zombat 이것은 정확히 몇 시간 동안 어려움을 겪고 있습니다. 고마워, 이제 끝났어
jawad mansoor

28

2018, Windows 10

간단한 PowerShell 스크립트를 사용하여 모든 파일 또는 디렉토리에 연결할 수 있습니다.

파일 바로 가기 스크립트 작성

Windows PowerShell ISE를 엽니 다. 스크립트 창에서 다음을 작성하십시오.

New-Alias ${shortcutName} ${fullFileLocation}

그런 다음 명령 행 분할 창으로 이동하십시오. 로 PowerShell 사용자 프로필 주소를 찾으십시오 echo $profile. 이 주소에 스크립트를 저장하십시오.

여기에 이미지 설명을 입력하십시오

PowerShell의 프로필 주소에있는 스크립트는 powershell을 열 때마다 실행됩니다. 바로 가기는 모든 새 PowerShell 창에서 작동합니다.

디렉토리 바로 가기 스크립트 작성

스크립트에 다른 줄이 필요합니다.

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

나머지는 정확히 같습니다.

여기에 이미지 설명을 입력하십시오

PowerShell 스크립트 사용

기본적으로 PowerShell 스크립트는 차단됩니다. 이를 사용하려면 설정-> 업데이트 및 보안-> 개발자 용을여십시오. 개발자 모드를 선택하십시오 (다시 시작해야 함). 개발자 모드 선택 Windows 10.

PowerShell 섹션으로 아래로 스크롤하여 "실행 정책 변경 ..."옵션을 선택하고 적용하십시오.

PowerShell 스크립트 활성화


2
echo $profile파일을 추가 할 올바른 위치를 찾는 데 유용한 팁입니다. 포괄적 인 답변에 감사드립니다
Pedro Martins Timóteo da Costa

19

단순한. 예를 들어 ...

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"이라는 단어를 입력하고 함수 내에서 코드를 실행할 수 있습니다!


$ profile은 Windows 10의 기본 환경 변수가 아닌 것 같습니다. 무엇을 가리키고 있습니까?
wordsforthewise

@wordsforthewise-$ PROFILE 자동 변수는 현재 세션에서 사용 가능한 PowerShell 프로필의 경로를 저장합니다. Windows PowerShell에 포함되어 있습니다.
스털링 본

1
이것은 가장 간단한 해결책은 없었습니다.
Phill

이 작업을 수행하려면 'PowerShell 스크립트 사용'(다른 답변으로)을 활성화해야했습니다. 정말 간단합니다!
Rocky Kev

10

가능한 위치 목록에 추가하기 만하면됩니다 ...

이것은 나를 위해 작동하지 않았다 : \Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

그러나 이것은했다 : \Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

프로파일이 없거나 설정하려는 경우 다음 명령을 실행하면 필요한 폴더 / 파일이 생성되고 어디에 있는지 알려줍니다! New-Item -path $profile -type file -force


5

profile1.psl 파일을 작성하려면 다음 명령을 입력하십시오.

새 항목 $ PROFILE.CurrentUserAllHosts -ItemType 파일 -Force

파일에 액세스하려면 다음 명령을 입력하십시오.

ise $ PROFILE.CurrentUserAllHosts

참고 이전에 이런 짓을하지 않은 경우, 당신은 당신이 때문에 당신이 제한 (기본값)에서 무제한으로 변경해야 사용자의 실행 정책의 스크립트를 실행할 수 없습니다 것을 볼 수 있습니다.

이렇게하려면 스크립트를 닫은 후 다음 명령을 입력하십시오.

실행 정책 설정 -Scope CurrentUser

그때:

원격 서명

그런 다음이 명령을 다시 수행하십시오.

ise $ PROFILE.CurrentUserAllHosts

마지막으로 스크립트에 별칭을 입력하고 저장하면 컴퓨터를 다시 시작한 후에도 powershell을 실행할 때마다 별칭이 실행됩니다.


3
당신은 아마 원할 것입니다 : Set-ExecutionPolicy RemoteSigned. 추천하지 마십시오 Unrestricted. 출처 : itprotoday.com/management-mobility/…
PhilT

2

이것은 약간 공상이지만 ... 작동합니다.

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 단계 : 도구에서 ~ / Documents / tools / profile.ps1 :

function Do-ActualThing {
    # do actual thing
}

Set-Alias MyAlias Do-ActualThing

3 단계 :

$ Set-ExecutionPolicy -Scope CurrentUser 무제한 $. ./install_profile.ps1

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.