호출할 수 없습니다 Powershell 스크립트는 다음과 같이 레지스트리를 통해니다. 위치 매개 변수를 찾을 수 없는지 인자'$null'

0

질문

여기에 간단한 테스트라는 기능 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

enter image description here

enter image description here

면 저는 이것을 통해 레지스트리(추가 명령 메뉴),을 얻을:

pwsh -noexit -file "C:\Tools\scripts\RegistryBoundParams.ps1" -Target "C:\Program Files\Python39\python.exe" -MySwitch

enter image description here enter image description here enter image description here

일반 텍스트의 오류: 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 작성하는 버그가 수정되었습. 원하는 사람을 하나인 자가 상승으로 바/하여 약속 안함수를 지원하는 크로스-플랫폼... 가서 그것을 얻을 수있다!

contextmenu powershell registry windows
2021-11-15 17:19:45
1

최고의 응답

1

문제었기 때문에(고정)버그에 코드를 기반으로 귀하의 자 올리는 기능 Request-AdminRights 에:

버그가 있는 경우에는 고급 스크립트와 같은,당신 $args -는 결코 바인딩에 고급스크립트로 직렬화 $null 신의 번역 @()의 결과로, $null 전달 받고 추가로 인수에 다시 호출을 기반으로 합니다.

당신의 세계를 경험해 보십시오 Request-AdminRights 기능에 따라 지금은 업체의 Ensure-Elevated 함수에서 원본 대답,당신의 문제 멀리 가야-지 않을 수정해야 합 둘러싸 스크립트입니다.

2021-11-15 19:39:31

니다! 감사합니다. 나는 수정의 스크립트를 매우 최소한으로 지원하는-NoExit 스위치입니다. 당신은 여기에서 찾을 수 있습니다: github.com/visusys/VSYSFileOps/blob/main/Public/...
Jay

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................