यहाँ एक साधारण परीक्षण समारोह कहा जाता है 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
अगर मैं इसे कॉल के माध्यम से पी एस टर्मिनल, सब कुछ काम करता है के रूप में की उम्मीद:
सही कॉल: 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'.
यहाँ एक reg फ़ाइल से पता चलता है कि वास्तव में मैं क्या जोड़ा गया रजिस्ट्री में:
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 जा रहा है पारित करने के लिए स्क्रिप्ट, और मैं क्यों पता नहीं है ।
मैं वास्तव में, वास्तव में कुछ मदद का उपयोग करें यहाँ.
बहुत बहुत धन्यवाद के लिए किसी भी मार्गदर्शन ।
संपादित करें:
मैंने पाया है कि अगर मैं जोड़ने के लिए, एक नया स्ट्रिंग चर बुलाया $catchall, स्क्रिप्ट काम करता है. मुझे संदेह है कि जब बुलाया जा रहा है रजिस्ट्री से यह appending एक अशक्त मूल्य के लिए कुछ कारण है । यही वजह है कि स्क्रिप्ट काम करता है जब मैं को परिभाषित करने के लिए एक अतिरिक्त "पकड़ सभी" चर.
यह निश्चित रूप से एक आदर्श समाधान नहीं सब पर है, तो मैं कर रहा हूँ अभी भी एक समाधान के लिए देख यहाँ. वास्तव में किसी भी मदद की सराहना करते हैं!
Edit2:
यह पता चला है कि Request-AdminRights
स्क्रिप्ट मैं का उपयोग कर रहा था कि mklement0 लिखा था कि एक बग अब तय हो गया है. किसी को भी, जो चाहता है एक लाइन आत्म पदोन्नति के साथ सीमा/अनबाउंड पैरामीटर का समर्थन है कि पार मंच... यह मिल जाना!