ठीक है, चलो इसे ऊपर से ले जाएं।
$computers = gc "C:\scripts\computers.txt"
चर $computers
में "computers.txt" फ़ाइल की सामग्री को लोड करता है। काफी सरल, कोई समस्या नहीं है।
अगला हमारे पास फॉरएच लूप है। यह $computers
की सामग्री को विभाजित करता है और घुमावदार ब्रेसिज़ के भीतर सभी कोड के विरुद्ध $computer
के रूप में प्रत्येक पंक्ति (संभावित रूप से कंप्यूटर का नाम) को संसाधित करता है।
foreach ($computer in $computers) {
वह लूप एक मानक if-Then कथन के साथ शुरू होता है। यदि (condition)
तो {do stuff}
। इस मामले में यह देखने के लिए परीक्षण किया जा रहा है कि $computer
नेटवर्क पर उपलब्ध है या नहीं। यदि ऐसा है, तो यह उस पर PSExec चलाने का प्रयास करता है। यदि यह ऑनलाइन नहीं है तो यह एल्से क्लॉज चलाता है, हम इसे दूसरे में प्राप्त करेंगे।
if (test-Connection -Cn $computer -quiet) {
फिर यह निर्देशिका बदलता है। व्यर्थ की तरह, लेकिन ठीक है, जो भी हो। आप इसे स्पष्ट रूप से बुला सकते थे, जैसे कि C:\PSTools\PSExec.exe <arguments>
और एक पंक्ति सहेजी, लेकिन वास्तव में कोई नुकसान नहीं हुआ है।
cd C:\pstools
फिर आप पीएसईएक्सईक को बुला रहे हैं, हालांकि यहां थोड़ी सी वाक्यविन्यास त्रुटि है। यह $computer
होना चाहिए और %computer
नहीं होना चाहिए। साथ ही, इसमें केवल वह आदेश होना चाहिए जिसे आप निष्पादित करना चाहते हैं, cmd
और दूसरी पंक्ति पर कमांड नहीं होना चाहिए। यदि आप शक्ति ऑपरेटर को यह समझने के लिए कॉल ऑपरेटर (&
) का उपयोग करते हैं तो बेहतर परिणाम हो सकते हैं कि यह कुछ निष्पादित करने की कोशिश कर रहा है और cmdlet या फ़ंक्शन नहीं चला रहा है या नहीं।
& psexec \\$computer C:\Folder\install.bat
उसके बाद वरना खंड है कि अगर कंप्यूटर नहीं स्ट्रिंग लिखने के लिए ऑनलाइन "$ कंप्यूटर है ऑनलाइन नहीं" बाकी खंड और foreach पाश के लिए ब्रेसिज़ बंद करने के बाद है कहते है।
} else {
"$computer is not online"
}
}
संपादित करें: ठीक है, अपने तैयार स्क्रिप्ट कुछ इस तरह (संलग्न लक्ष्य उद्धरण में मामले में पथ में स्थान नहीं) दिखना चाहिए:
$computers = gc "C:\scripts\computers.txt"
foreach ($computer in $computers) {
if (test-Connection -Cn $computer -quiet) {
& C:\pstools\psexec.exe \\$computer "C:\folder\install.bat"
} else {
"$computer is not online"
}
}
क्या वास्तविक लिपि कॉपी और चिपकाया गया है? या फिर कुछ टाइपो के साथ संभवतः फिर से टाइप किया गया? – TheMadTechnician
मैं इसे कॉपी/पेस्ट करता हूं। मैं पावरहेल में स्क्रिप्टिंग के साथ बहुत नौसिखिया हूं, क्षमा करें अगर वाक्यविन्यास खराब हो गया है। – noz3r0
शक्तियों के साथ psexec का उपयोग न करने का प्रयास करें, मुझे इस पर बहुत सारे मुद्दे मिल गए हैं ... –