여기에 간단한 테스트라는 기능 RegistryBoundParams.ps1
:
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[string]
$Target,
[Parameter(Mandatory = $false)]
[switch]
$MySwitch
)
if(!(Test-IsAdmin)){
Request-AdminRights -NoExit
Exit
}
if($MySwitch){
"Do something" | Out-Host
}else {
"Do something else" | Out-Host
}
Show-AllArguments
는 경우 전화를 통해 그것은 PS 터미널,모두 예상대로 작동:
정확한 전화: C:\Tools\scripts> .\RegistryBoundParams.ps1 -Target "C:\Test\" -MySwitch
면 저는 이것을 통해 레지스트리(추가 명령 메뉴),을 얻을:
pwsh -noexit -file "C:\Tools\scripts\RegistryBoundParams.ps1" -Target "C:\Program Files\Python39\python.exe" -MySwitch
일반 텍스트의 오류: RegistryBoundParams.ps1: A positional parameter cannot be found that accepts argument '$null'.
여기에 등록 파일을 보여주는 정확하게 어떤 추가 레지스트리에서:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\1_TestRegistry]
@="Test Powershell Script from Registry"
"Icon"="C:\\Tools\\icons\\apps\\Powershell 1.ico,0"
"NeverDefault"=""
[HKEY_CLASSES_ROOT\*\shell\1_TestRegistry\command]
@="pwsh -noexit -file \"C:\\Tools\\scripts\\RegistryBoundParams.ps1\" -Target \"C:\\Program Files\\Python39\\python.exe\""
그래서 어딘가에 따라 선$Null 이 전달되는 스크립트,그리고 나는 왜 아무 생각이 없습니다.
내가 정말,정말 도움을 사용니다 여기에.
너무 감사해 안내합니다.
편집:
내가 찾는 경우 추가로 새 문자열 변수라는$포괄적이,스크립트 작동합니다. 내가 의심되는 경우 호출되는 레지스트리에서 그것은 추가하는 null 값이 어떤 이유입니다. 는 이유는 스크립트는 작동할 때 나는 추가로 정의"모든"변수입니다.
이것은 확실히 이상적인 솔루션 모두에서,그래서 나는 아직 솔루션을 찾고 여기에. 정말 어떤 도움을 주셔서 감사합니다!
Edit2:
이 Request-AdminRights
스크립트를 사용했던 mklement0 작성하는 버그가 수정되었습. 원하는 사람을 하나인 자가 상승으로 바/하여 약속 안함수를 지원하는 크로스-플랫폼... 가서 그것을 얻을 수있다!