2010-07-01 19 views
6

के अंदर चलाया जाता है, मैं 48 कंप्यूटरों की सूची में एक cmd फ़ाइल निष्पादित करने का प्रयास कर रहा हूं। मैं निष्पादित नहीं करना चाहता हूं और अनुक्रमिक रूप से पूरा होने की प्रतीक्षा कर रहा हूं क्योंकि प्रत्येक cmd को पूरा होने में लगभग 10 मिनट लगते हैं। WinRM एक विकल्प नहीं है। न तो डब्ल्यूएमआई है। PSExec एक विकल्प है .... लेकिन मैं इसे स्टार्ट-जॉब के अंदर काम नहीं कर सकता।पीएसईएक्सईसी कभी भी पूरा नहीं होता है जब स्टार्ट-जॉब

मैं की तरह कुछ कर रहा हूँ:

$sb = { 
    param 
    (
     $computer = "serverw01", 
     $userid = "domain2\serviceid", 
     $password = 'servicepw', 
     $command = "cd /d d:\ && updateAll.cmd" 
    ) 

    d:\eps\pstools\PsExec.exe -u $userid -p $password "\\$($computer)" cmd /c $command 
} 

foreach ($computer in Get-Content "D:\Data\serverlist.txt") { 
    Start-Job $sb -ArgumentList $computer 
} 

यह नौकरियों का एक समूह बनाता है .... लेकिन कभी पूरा और अगर मैं उनमें से किसी पर प्राप्त करें-नौकरी मैं वापस

PS> get-job | receive-job -Keep 

    + CategoryInfo   : NotSpecified: (:String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 

PsExec v1.98 - Execute processes remotely 
Copyright (C) 2001-2010 Mark Russinovich 
Sysinternals - www.sysinternals.com 
मिल

तब भी वह अच्छे कार्यान्वित अगर मैं की तरह समारोह चलाएँ:

& $sb -computer "serverw01" 

शुरुआत स्क्रिप्ट सेर पर Powershell v2.0 में चलाया जाता है ver 2008r2 बॉक्स मैंने डोमेन व्यवस्थापक उपयोगकर्ता (उसी परिणाम) के साथ लॉग इन करते समय डोमेन 2 में एक बॉक्स पर इसे आजमाया है।

उत्तर

4

psexec आदेश के लिए यह प्रयास -accepteula पैरामीटर प्रयास करें psexec के बाद चर सही:

d:\eps\pstools\psexec "\\$($computer)" /accepteula -u $userid -p $password -d cmd /c $command 
+1

धन्यवाद-आप लिज़। उत्तर कंप्यूटर मान का प्लेसमेंट प्रतीत होता है। मैंने इसे डीडी और/एसीप्टेला के साथ और बिना कोशिश की (मैंने लंबे समय से स्वीकार किया है eula :)) और सक्षम कारक यह सुनिश्चित कर रहा था कि कम्प्यूटनाम मान PSEXEC के बाद पहला मान था। –

0

सुनिश्चित करने में शामिल हैं "-d" प्रतिक्रिया के लिए इंतजार नहीं कर करने के लिए, और कंप्यूटर में कहें, psexec को

तरह
d:\eps\pstools\PsExec.exe -accepteula -u $userid -p $password 

from

+0

प्रतिक्रिया के लिए धन्यवाद। निष्पादित प्रक्रियाओं दूर कॉपीराइट (सी) 2001-2010 मार्क Russinovich Sysinternals - NativeCommandError PsExec v1.98: NotSpecified: (: स्ट्रिंग) [], RemoteException + FullyQualifiedErrorId एक ही प्रतिक्रिया + CategoryInfo में -accepteula परिणाम जोड़ना - www.sysinternals.com –

0
$computerList = Get-Content "D:\Data\serverlist.txt"  
$sb = 
{ 
    param($name) 
     } 
      $computer = $name 
      $userid = "domain2\serviceid" 
      $password = 'servicepw' 
      $command = "cd /d d:\ && updateAll.cmd" 
      d:\eps\pstools\PsExec.exe -u $userid -p $password \\$computer cmd /c $command 
     { 
} 
foreach ($computer in $computerLinst) { 
    Start-Job $sb -ArgumentList $computer 
} 
2

यह लटकती समस्या Win2003 और Win2008 सर्वर पर होती है।

अधिकांश लोग इस मुद्दे को गूंजने और पाइपिंग जैसे कामकाज के साथ हल करते हैं ताकि शक्तियों को एसटीडीआईएन से कुछ इनपुट मिल सके।

लेकिन शक्तियों के भीतर एक समाधान मौजूद है। विकल्प के साथ बस पावरहेल शुरू करें- इनपुटफॉर्मैट कोई भी नहीं:

powershell -inputformat none -command ... 
संबंधित मुद्दे