मैं एक PowerShell स्क्रिप्ट लिख रहा हूं जो Invoke-Command और उसके -ScriptBlock
पैरामीटर का उपयोग कर रिमोट होस्ट पर कमांड निष्पादित करेगा। उदाहरण के लिए,तर्कों के साथ फ़ंक्शन पर Invoke-Command -ScriptBlock का उपयोग
function Foo {
...
return "foo"
}
$rv = Invoke-Command --Credential $c --ComputerName $fqdn -ScriptBlock ${function:Foo}
यह ठीक काम करता है। मैं अब क्या करना चाहता हूं वही बात है, लेकिन स्थानीय तर्कों के साथ एक समारोह को कॉल करें। उदाहरण के लिए,
function Bar {
param([String] $a, [Int] $b)
...
return "foo"
}
[String] $x = "abc"
[Int] $y = 123
$rv = Invoke-Command --Credential $c --ComputerName $fqdn -ScriptBlock ${function:Foo($x,$y)}
लेकिन यह काम नहीं करता है:
आह्वान-कमान: पैरामीटर 'ScriptBlock' पर तर्क मान्य नहीं कर सकता। तर्क शून्य है। एक गैर-शून्य तर्क की आपूर्ति करें और को फिर से आदेश दें।
मैं कैसे एक -ScriptBlock
तर्क के साथ एक स्थानीय समारोह है कि के साथ आह्वान-कमान का उपयोग कर सकते हैं?
मुझे एहसास है कि मैं पूरे फ़ंक्शन और पैरामीटर को एक बड़े कोड ब्लॉक में लपेट सकता हूं, लेकिन यह मेरी राय में ऐसा करने का एक साफ तरीका नहीं है।
धन्यवाद आदमी, पूरी तरह से काम करता है! मैं परम के संयोजन के साथ गड़बड़ कर रहा था() + - कोई भाग्य के साथ आर्टमेंट्स। –
ने मुझे इस समाधान को खोजने में कई घंटे लगे ;-) सत्रों को निर्यात/आयात करने से काफी बेहतर धन्यवाद! – icnivad
मेरा मानना है कि सही प्रारूप '-ScriptBlock {$ फ़ंक्शन: Foo}' (नोट '$' स्थिति) – Mourndark