कमांड cmd के माध्यम से ठीक निष्पादित करता है, लेकिन PowerShell के माध्यम से नहीं


2

यह आदेश काम नहीं करता है:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound

यह आदेश काम करता है:

netsh advfirewall set allprofiles state on

मैंने इनवोक-कमांड और & amp; का उपयोग करने की कोशिश की है, लेकिन मुझे यह काम करने के लिए नहीं मिला। जब मैं PS में उपरोक्त कमांड चलाता हूं, तो यह मुझे बताता है:

प्रदान किए गए तर्कों की संख्या मान्य नहीं है। सही सिंटैक्स के लिए मदद की जाँच करें।


PS v5 या भागने का उपयोग करें ,: netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
PetSerAl

@PetSerAl धन्यवाद, जो पूरी तरह से काम करता है। क्या कोई कारण है कि मुझे इस विशिष्ट कमांड में भागने के चरित्र की आवश्यकता है और किसी अन्य को नहीं? मेरी स्क्रिप्ट में शायद 30-40 विभिन्न प्रकार के कमांड हैं और यह पहली बार है जब मुझे एक स्ट्रिंग के बाहर भागने के चरित्र का उपयोग करने की आवश्यकता हुई है।
RMal

आपको अल्पविराम से बचने की आवश्यकता है, क्योंकि स्ट्रिंग के बाहर यह पॉवरशेल में विशेष चरित्र है। संभव है, यह आपका पहला मामला है, जब आपको मूल आवेदन के लिए शाब्दिक अल्पविराम पास करना होगा।
PetSerAl

जवाबों:


6

कॉमा पॉवरशेल के लिए एक विशेष चरित्र है। आपके मामले में इसकी व्याख्या एक द्विआधारी सरणी ऑपरेटर के रूप में की जाती है। यह दो तत्वों के साथ सरणी बनाता है blockinboundalways तथा allowoutbound। V5 के नीचे पॉवरशेल एरे तत्वों को अंतरिक्ष के साथ अलग कर देगा जब ऐरे देशी अनुप्रयोगों में पास हो जाएगा। परिणामी कमांड लाइन पास हो गई netsh निम्नलिखित होगा:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound

जो आपको नहीं चाहिए। आपको अल्पविराम से बचना होगा या इसे शाब्दिक रूप से व्याख्या करने के लिए उद्धरणों में संलग्न करना होगा:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.