के नाम के रूप में पहचाना नहीं गया है मेरे पास एक फ़ाइल में संग्रहीत PowerShell स्क्रिप्ट है, MergeDocuments.ps1। जब मैं विंडोज PowerShell आदेश शीघ्र से स्क्रिप्ट चलाने यह ठीक
.\MergeDocuments.ps1 1.docx 2.docx merge.docx
शब्द 'cmdlet,
एक Windows सांत्वना आवेदन से स्क्रिप्ट कॉलिंग चलाता भी ठीक चलाता है।
जब मैंने स्क्रिप्ट को एक Asp.Net वेब सेवा से कॉल करने का प्रयास किया, तो मुझे रजिस्ट्री पहुंच से संबंधित कुछ मुद्दों का सामना करना पड़ा। मैंने प्रतिरूपण का उपयोग किया और इस समस्या को हल करने के लिए रजिस्ट्री कुंजी HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
पर नेटवर्क सेवा खाते को अनुमति दी
अगला मुझे PowerShell OpenXmlPowerTools.DocumentSource [] के प्रकार बनाने में असमर्थ होने के बारे में समस्या का सामना करना पड़ा, इसलिए मैंने अपनी लिपि में निम्नलिखित जोड़ा
Add-Type -Path "C:\Users\Administrator\Documents\WindowsPowerShell\Modules\OpenXmlPowerTools\OpenXmlPowerTools.dll"
Import-Module OpenXmlPowerTools
अब वर्तमान समस्या यह है कि मैं त्रुटि हो रही है कि "शब्द 'मर्ज-OpenXmlDocument' एक cmdlet का नाम के रूप में मान्यता प्राप्त नहीं है, ..."
मैं ऐसा कैसे हल कर सकते हैं ?
PowerShell स्क्रिप्ट
Add-Type -Path "C:\Users\Administrator\Documents\WindowsPowerShell\Modules\OpenXmlPowerTools\OpenXmlPowerTools.dll"
Import-Module OpenXmlPowerTools
# The last argument is the path of the merged document
$noOfSourceDocs = ($($args.length) - 1)
# Create an array to hold all the source documents
[OpenXmlPowerTools.DocumentSource[]] $docs = New-Object OpenXmlPowerTools.DocumentSource[] $noOfSourceDocs
for ($i = 0; $i -lt $noOfSourceDocs; $i++)
{
$docs[$i] = New-Object -TypeName OpenXmlPowerTools.DocumentSource -ArgumentList $args[$i]
$docs[$i].KeepSection = 1
}
Merge-OpenXmlDocument -OutputPath $args[-1] -Sources $docs
वेब सेवा नेट कोड
using (new Impersonator(username, domain, password))
{
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
RunspaceInvoke invoker = new RunspaceInvoke(runspace);
invoker.Invoke("Set-ExecutionPolicy Unrestricted");
// create a pipeline and feed it the script file
Pipeline pipeline = runspace.CreatePipeline();
Command command = new Command(ConfigurationManager.AppSettings["PowerShellScript"]);
foreach (var file in filesToMerge)
{
command.Parameters.Add(null, file);
}
command.Parameters.Add(null, outputFilename);
pipeline.Commands.Add(command);
pipeline.Invoke();
runspace.Close();
}
मैं उत्सुक हूँ आप पहले स्थान पर एएसपीनेट से पावरहेल स्क्रिप्ट निष्पादित करना क्यों चाहेंगे। –
मुझे यकीन नहीं है लेकिन 'OpenXmlPowerTools.dll'' v2.0.50727' को लक्षित कर सकता है - जांचें कि आप अपना सी # डीएलएल कैसे बनाते हैं? यदि यह .NET 4.0 है तो मैंने इसी तरह के मुद्दों को देखा है - आपको इसके बजाय 3.5 को लक्षित करने की आवश्यकता होगी। कोशिश करो और मुझे बताओ। – NSGaga
@ सेठ मुझे एकाधिक वर्ड दस्तावेज़ों को मर्ज करने की ज़रूरत है, OpenXmlPowerTools मुझे सबसे अच्छा टूल मिल सकता है। यही कारण है कि मुझे वेब सेवा से PowerShell स्क्रिप्ट चलाने की आवश्यकता है। क्या उनके कोई अन्य सुझाव हैं? –