জিপিও / জিপিপি-র মাধ্যমে মুদ্রকগুলি স্থাপন করা - কোনও প্রোগ্রামেটিক বিকল্প নেই?


10

আমার নিয়ন্ত্রণ ছাড়িয়ে যাওয়ার কারণে, আমাদের 1000+ ক্লায়েন্টগুলিতে আমাদের 100+ প্রিন্টার স্থাপন করার জন্য আমাকে জিপিও / জিপিপি স্থাপন করার দায়িত্ব দেওয়া হয়েছে।

সুসংবাদটি হ'ল আমাদের এক ডজনেরও বেশি সাইট রয়েছে এবং বেশিরভাগ অংশের জন্য, আমি এক্স এক্স এর সমস্ত মুদ্রকগুলিকে সাইট এক্স এর সমস্ত ক্লায়েন্ট পিসিতে ফেলে দিতে পারি allowed

খারাপ খবরটি হ'ল আমি জানি যে দুটি উপায় আমি কীভাবে এটি করতে চাই ( "প্রিন্ট সার্ভার থেকে" গ্রুপ নীতি দিয়ে জালিত করুন ... " এবং জিপিপি / গ্রুপ নীতি অগ্রাধিকারগুলি ব্যবহার করা ) আমি রাজি না থেকে অনেক বেশি ম্যানুয়াল কাজ জড়িত এটি অনেকগুলি মুদ্রক। আমি এমনকি একটি মুদ্রক সার্ভারে সমস্ত মুদ্রকগুলি নির্বাচন করে Deploy with Group Policy...বিকল্পটি ব্যবহার করতে পারি না বলে মনে করি না - উদাহরণস্বরূপ - এটি আমার একের পর এক এমনটি করার প্রত্যাশা করে, যা ঘটছে না The জিপিপিগুলি আরও খারাপ , যেমন এটি মুদ্রণ সার্ভার থেকে একটি প্রিন্টারের পথ নির্বাচন করবে এবং তারপরে ম্যানুয়ালি একগুচ্ছ তথ্য (যেমন প্রিন্টার আইপি) এ মুষ্ট্যাঘাত করবে যা এটি প্রিন্টার সংযোগ থেকে পেতে সক্ষম হবে exp

কোনও জিপিও / জিপিপিতে মুদ্রক সার্ভারে সমস্ত প্রিন্টার যুক্ত করার জন্য আমার স্ক্রিপ্টের জন্য আমার গুগল-ফু খালি এসেছিল, এবং আমি এটি একটি আধা-স্বয়ংক্রিয় ফ্যাশনেও করার অন্য কোনও উপায় দেখতে পাচ্ছি না, তবে আমি স্টিক করছি এই বিশ্বাসের সাথে যে আমি কিছু মিস করছি, কারণ কোনও বিবেকবান ব্যক্তি নিজেই কয়েক হাজার প্রিন্টারকে জিপিওতে ম্যানুয়ালি যোগ করার পছন্দ করেনি।

আদর্শভাবে, আমি জিপিপিগুলি ব্যবহার করার জন্য একটি প্রোগ্রাম্যাটিক উপায়টি খুঁজতে চাই, তবে পরিস্থিতিতে, প্রিন্টারগুলিতে ম্যানুয়ালি যোগ করার কয়েক ডজন ঘন্টার মধ্যে জড়িত না এমন কোনও সমাধানই দুর্দান্ত।

কারও কি এটি করার উপায় আছে, বা আমি একটি পাওয়ারশেল স্ক্রিপ্ট তৈরি করতে এবং / অথবা একটি অধস্তনকে এটি করতে প্ররোচিত করতে চাই?


1
আমি আজ আগে আড্ডায় আপনাকে উল্লেখ করেছি, জিপিওগুলি প্রোগ্রামগতভাবে তৈরি এবং লিঙ্ক করার জন্য একটি সিওএম ইন্টারফেস রয়েছে ... সমস্ত কিছু এরকম কিছু দিয়ে শুরু করা $GPM = New-Object -ComObject GPMgmt.Gpm। আমি মনে করি যে ইন্টারফেসটি যখন কাজ করার জন্য একটি পরম শুয়োরেরূপে হতে পারে তখন আপনাকে সম্ভবত কিছু এক্সএমএল হ্যাক করার চেয়ে কিছুটা বেশি সমর্থনযোগ্য পদ্ধতি সরবরাহ করতে পারে যা আসল জিপিওর মতো দেখতে এবং গন্ধে আসে। যদিও কেউ সিওএম পছন্দ করে না। আমরা পাওয়ারশেলারদের মধ্যে সবচেয়ে কম।
রায়ান রেস

1
@ রায়ানআরইস হ্যাঁ, আমি এখনও এটি আমার মনের মধ্যে একটি লাথি মেরে চলেছি, এবং আমি যে বিষয়টির বিষয়ে সিদ্ধান্ত নিইনি তার একটি হ'ল আমার স্ক্রিপ্টটি সমর্থনযোগ্য হওয়া দরকার, বা এটি একটি সেট আপ করার জন্য কেবল একবারের জিনিস thing প্রথম স্থান. খুব নিশ্চিত যে আমি এগুলি এখানে পোস্ট করব, যা কিছু শেষ করি না কেন।
আশাহীন N00b

আপনি যখন বলছেন যে আপনার 100 টি প্রিন্টার মোতায়েন করা দরকার, আপনার মানে এই নয় যে সমস্ত কম্পিউটারে (1..1000) সমস্ত 100 প্রিন্টার থাকা উচিত, তাই না?
আদিল হিন্দিস্তান

1
প্রতিটি অ্যাডিলহাইদিস্তান নং। প্রতিটি কম্পিউটারকে তার সাইটে সমস্ত প্রিন্টার পাওয়া উচিত। (কম-বেশি।) তবে এগুলিকে আলাদা করা শক্ত অংশ নয়। এটি প্রিন্টারে জিপিওতে প্রথম স্থান পেয়েছে যা এটি মনে করা উচিত যে তার চেয়ে বেশি ব্যথা হতে পারে।
আশাহীন

উত্তর:


7

আমি বেশ শক্তভাবে গুগল করেছি, এবং backup-GPOফলাফল XML ফাইলটি হ্যাক করতে এবং এটি পুনরায় আমদানি করতে সক্ষম হওয়ার আশায়ও খেললাম, তবে আমার সন্দেহ হয় যে পাওয়ারশেলের স্ক্রিপ্টটি আপনার ভবিষ্যতে রয়েছে।

এটা যে খারাপ না. আপনি নিকটস্থ সার্ভার থেকে প্রিন্টার তালিকা তৈরি করতে পারেন এবং তারপরে লুপ করে এগুলি ম্যাপ করতে পারেন।

এটার মতো কিছু:

$net = New-Object -COMObject WScript.Network
$printserver = 'yourserver'

$printerlist = Get-WMIObject -class Win32_Printer -computer $printserver | Where-Object {$_.ShareName -ne $null} | Select-Object ShareName
foreach ($printer in $printerlist) 
{
    $printerpath = '\\' + $printserver + '\' + $printer.ShareName
    #echo $printerpath
    $net.AddWindowsPrinterConnection($printerpath)
}

যদি প্রিন্টারের নাম যুক্তিযুক্ত জিনিস হিসাবে দেওয়া হয়, এবং মেশিনগুলি সনাক্ত করার কিছু যুক্তিসঙ্গত উপায় রয়েছে তবে আপনি এটি আরও পরিমার্জন করতে সক্ষম হতে পারেন। উদাহরণস্বরূপ, ক্লায়েন্টের আইপি ঠিকানাটি টানানোর উপর ভিত্তি করে আমি নিকটতম সার্ভারটি বেছে নিই। আইপি ঠিকানা যদি 10.20। * এর মতো হয় তবে সার্ভার 1 এ যান। প্রভৃতি

আমি আশা করি এটি সাহায্য করবে.

সম্পাদনা:

@ ইভানএন্ডারসনের ডকুমেন্টেশনটি দেখে, আমি নিশ্চিত যে এক্সএমএল হ্যাকযোগ্য।

আমার রফতানি করা ফাইলের (রিডাক্টস সহ) প্রাসঙ্গিক বিট:

<DSObject bkp:Path="CN={GUIDHERE},CN=PushedPrinterConnections,%GPO_MACH_DSPATH%" bkp:SourceExpandedPath="CN={13B9B596-452C-4652-A05D-78EF06610134},CN=PushedPrinterConnections,CN=Machine,CN={44A99FBA-0DB3-484C-808E-3DDAE9932A2B},CN=Policies,CN=System,DC=Domainname,DC=extension" bkp:ObjectClass="msPrint-ConnectionPolicy">
    <DSAttributeMultiString bkp:DSAttrName="showInAdvancedViewOnly">
        <DSValue><![CDATA[TRUE]]></DSValue>
    </DSAttributeMultiString>
    <DSAttributeMultiString bkp:DSAttrName="uNCName">
        <DSValue><![CDATA[\\Servername\PrinterShareName]]></DSValue>
    </DSAttributeMultiString>
    <DSAttributeMultiString bkp:DSAttrName="serverName">
        <DSValue><![CDATA[\\Servername]]></DSValue></DSAttributeMultiString>
    <DSAttributeMultiString bkp:DSAttrName="printAttributes">
        <DSValue><![CDATA[0]]></DSValue>
    </DSAttributeMultiString>
    <DSAttributeMultiString bkp:DSAttrName="printerName">
        <DSValue><![CDATA[PrinterShareName]]></DSValue>
    </DSAttributeMultiString>
</DSObject>

এটি একটি ভাল উত্তর (এবং আমি আমাদের কিছু সময়সীমা পূরণের জন্য এই জাতীয় কিছু ব্যবহার করতে পারি) তবে আমি সন্দেহ করি যে কোনও ইন্টার্ন বা অধস্তন এই প্রশ্নের ভবিষ্যতে, আসলে, যেহেতু আমাদের নিয়োগের জন্য জিপিও / জিপিপি ব্যবহার করার দরকার পড়েছে কিছু সময়ে মুদ্রক। এবং যখন কোনও পিএস লগন স্ক্রিপ্ট প্রযুক্তিগতভাবে সেই প্রয়োজনীয়তার সাথে খাপ খায়, আমি প্রত্যাশা করি যে ব্যবস্থাপনাগুলি আমার পক্ষে যথেষ্ট পরিমাণে মার্প করবে যাতে সেভাবে এটি করার জন্য আমার মূল্য উপযুক্ত না হয়।
আশাহীন N00b

হায়রে। :( জিপিও PowerShell cmdlets ব্যাক আপ করতে, পুনঃস্থাপন, ফাঁকা বস্তু তৈরি করুন ... কিন্তু না GPOs যোগ মনে এক্সএমএল যে বস্তু প্রিন্টার নীতি চেহারা আছে। সম্পূর্ণভাবে GUID ছাড়া hackable।
ক্যাথরিন Villyard

1
হ্যাঁ, তৃতীয় পক্ষের সরঞ্জামগুলি ছাড়াই, পাওয়ারশেলের মাধ্যমে জিপিও / জিপিপি অটোমেশন বেশ বেদনাদায়ক। আমি দেখতে খুব সুন্দর দেখতে পেলাম , এটির জন্য একটি তৃতীয় পক্ষের সফ্টওয়্যার স্যুট দরকার এটি সংরক্ষণ করে আমাদের সম্ভবত কিনতে দেওয়া হবে না ... সুতরাং সম্ভবত বিদ্যমান সাইট-নির্দিষ্ট করে আপনার এক্সএমএল সম্পাদনা করার মতো এটি সম্ভবত কিছু স্ক্রিপ্ট হবে জিপিও ... যা আমি ধারণা করি আমি শেষ হয়ে গেলে এখানে পোস্ট করব।
হোপলেস

8

গোষ্ঠী নীতি এর PowerShell ব্যবস্থাপনা sucks W / O তৃতীয় পক্ষের (বাণিজ্যিক) পণ্য, আমার মতে।

আমি মনে করি আপনি যা খুঁজছেন তা করতে গ্রুপ পলিসি অবজেক্টগুলিতে এক্সএমএল (বা আপনি যদি পছন্দ করেন তবে HTML ) এর মাধ্যমে স্লিংগিং আটকে গেছেন

ভাগ্যক্রমে এক্সএমএলটিকে ততটা ভয়ঙ্কর মনে হচ্ছে না । প্রতি-প্রিন্টার ইউআইডি মান (যা আমি বিশ্বাস করি যে @ ক্যাথারিনভিিলার্ড তার মন্তব্যে উল্লেখ করছেন) এটি এক্সএমএলে রেফারেন্সযুক্ত প্রতিটি প্রিন্টারের জন্য তৈরি একটি এলোমেলো গিউডি।

এখানে কয়েকটি নমুনা পাওয়ারশেল কোড রয়েছে, নির্লজ্জভাবে ক্যাথরিনের কোডের পরে মডেল করা:

@"
<?xml version="1.0" encoding="utf-8"?>
<Printers clsid="{1F577D12-3D1B-471e-A1B7-060317597B9C}" disabled="0">
"@

$net = New-Object -COMObject WScript.Network
$printserver = 'print-server'

$printerlist = Get-WMIObject -class Win32_Printer -computer $printserver | Where-Object {$_.ShareName -ne $null} | Select-Object ShareName
foreach ($printer in $printerlist) 
{
    $date = Get-Date
    echo '  <SharedPrinter clsid="{9A5E9697-9095-436d-A0EE-4D128FDFBCE5}"'
    '    name="' + $printer.ShareName + '"' | echo
    '    status="' + $printer.ShareName + '"' | echo
    echo '    image="2"'
    '    changed="' + $date + '"' | echo
    $ng = [GUID]::NewGuid().ToString('B')
    '    uid="' + $ng + '">' | echo

    echo '    <Properties'
    echo '      action="R"'
    echo '      comment=""'
    '      path="\\' + $printserver + '\' + $printer.ShareName + '"' | echo
    echo '      location=""'
    echo '      default="1"' 
    echo '      skipLocal="1"'
    echo '      deleteAll="0"'
    echo '      persistent="0"'
    echo '      deleteMaps="0"'
    echo '      port=""/>'
    echo '  </SharedPrinter>'
}

@"
</Printers>
"@

(আমি সত্যিই কুৎসিত পাওয়ারশেল কোডটি লিখছি))

আমি আসলে জিপিপি সিএসই এই এক্সএমএলকে পার্স করার চেষ্টা করিনি। এক্সএমএল কমপক্ষে বৈধতা দেয়।

আমি এসআইএসভিএল Get-GPO-তে জিপিওর জন্য ফাইল-সিস্টেমের পাথের জন্য জিইউইউডিটি ব্যবহার করে এবং পার্সিংয়ের বিষয়ে কিছু একত্ববাদ লেখার বিষয়ে ভাবতে শুরু করি তবে, আজ সন্ধ্যায় আমাকে কিছু সত্যিকারের কাজ করা দরকার বলে আমি মনে করি আমি চলে যাব এটি পাঠকের জন্য অনুশীলন হিসাবে। > হাসি <তবে এটি অত্যন্ত সম্ভাব্য হওয়া উচিত।


এটি যদি এলোমেলো জিইউইডি হয় তবে এটি অবশ্যই হ্যাকযোগ্য। আমিও আমার আপডেট করেছি updated হেহ।
ক্যাথরিন ভিলিয়ার্ড

গ্রুপ পলিসি ব্যাকআপে এক্সএমএলকে সংশোধন করা অবশ্যই কাজ করবে, তবে এসওয়াইএসভিএলে এটি "লাইভ" পরিবর্তন করাও সম্ভব হবে (প্রদত্ত কেউ যদি সাহসী, বোকা, বা আমার মতো উভয়ই থাকে)। যেহেতু আমার এই সন্ধ্যায় করার আসল কাজ রয়েছে (এবং যেহেতু আমি এই কোয়ার্টারে পুনরায় র‌্যাঙ্কিংয়ের জন্য @Wewite ফিরে এসেছি) আমি মনে করি আমি সেই নির্দিষ্ট বন্দুকটি লোড করে অন্য কারও কাছে তাদের পায়ের দিকে ইশারা করে সংরক্ষণ করব। > জিগল <
ইভান অ্যান্ডারসন

আমি সাহসী, কিন্তু আমি তেমন সাহসী নই। ;) ফাইল উত্পন্ন করুন, পরীক্ষার পরিবেশে এটি আমদানি করুন ইত্যাদি
কেথরিন ভিলিয়ার্ড

2
পাওয়ারশেলের জন্য আরও বেশি জিপিও বিকল্পের প্রয়োজন। গেট-লিংক, সেট-লিংক, নতুন-জিপিও এবং সেট-জিপিওরেজিস্ট্রি সত্যিই যথেষ্ট ভাল নয় ...
মার্ক হেন্ডারসন

অন্তর্নির্মিত পাওয়ারশেল কমান্ডগুলি কখনও কখনও পর্যাপ্ত হয় না। সেক্ষেত্রে আমি জিপিও গাইয়ের সমাধানগুলি দেখার পরামর্শ দিই suggest তার একটি সংস্থা রয়েছে: sdmsoftware.com
আদিল

0

আমি সম্প্রতি একটি অনুরূপ প্রকল্প হাতে নিয়েছি এবং ভাল জিপিও পুশ পদ্ধতি বনাম নতুন জিপিপি বনাম স্ক্রিপ্টিং সন্ধানের পরে, আমি পুরো জিনিসটি স্ক্রিপ্টিংয়ের জন্য বেছে নিয়েছি। আপনার পক্ষে কী সবচেয়ে ভাল কাজ করবে তা আমার কোনও ধারণা নেই তবে এখানে আপনার জন্য কয়েকটি পয়েন্টার রয়েছে:

  • মুদ্রণ সার্ভারগুলিতে সংযোগ করতে এবং মুদ্রণ সার্ভারগুলি থেকে মুদ্রক সম্পর্কিত তথ্য পেতে আদর্শভাবে একটি নতুন ওএস (উইন্ডোজ 8/2012 +) সহ একটি ক্লায়েন্ট ব্যবহার করুন:

    গেট-প্রিন্টার-কম্পিউটার প্রিন্ট সার্ভার নাম

  • কম্পিউটারে মুদ্রণের সারি মানচিত্র করতে AD সুরক্ষা গোষ্ঠীগুলি ব্যবহার করুন। সুতরাং আসুন আমরা বলি যে আপনার একটি মুদ্রণ সারি রয়েছে (আপনি উপরের কমান্ডটি থেকে সংগ্রহ করেছেন) যার নাম \ PrintServer1 \ MyColorPrinter123, একটি সুরক্ষা দল তৈরি করুন প্রিন্টার.group.PressServer1.MyColorPrinter123, এবং সেই গোষ্ঠীতে কম্পিউটার যুক্ত করুন

  • স্টার্টআপ স্ক্রিপ্টে, কম্পিউটারটি আসার সময় গ্রুপের সদস্যতা যাচাই করার জন্য একটি ফাংশন রাখুন এবং দেখুন এটি কোনও প্রিন্টার গ্রুপের অংশ কিনা if যদি এটি হয় তবে প্রিন্টারের মানচিত্রের জন্য বিল্ট-ইন printui.exe (বা printui.dll) কমান্ডগুলি ব্যবহার করুন

    ইনভোক-এক্সপ্রেশন 'rundll32 printui.dll, PrintUIEntry / ga / n "\ PrintServer1 \ MyColorPrinter123" / কিউ'

  • কম্পিউটারটি শেষ হয়ে গেলে, প্রিন্ট স্পুলার পরিষেবাটি জিপিওরা লগইন করতে যাওয়া কোনও ব্যবহারকারীর কাছে 'প্রিন্ট সংযোগ' চাপবে push

আপনি আরও অনেক বিস্তারিত ** যেতে পারেন তবে উচ্চ স্তরে এটি যা লাগে।

** আমি একটি জিইউআই তৈরি করেছি যা ব্যবহারকারীদের (প্রকৃতপক্ষে) কোনও প্রিন্ট সার্ভার চয়ন করতে দেয় এবং এটি তাদের সেই সার্ভারে প্রিন্টারগুলির তালিকা দেয়। যদি তারা একটি চয়ন করে তবে তারা এর সমস্ত বৈশিষ্ট্য দেখতে পাবে। সেই তথ্যটি আমি উপরে উল্লিখিত গেট-প্রিন্টার থেকে আসে। যদি আপনি সেই ডেটা সিএসভি হিসাবে রফতানি করেন তবে আপনি তথ্য প্রদর্শন করতে পুনরায় ব্যবহার করতে পারেন ..

** প্রযুক্তিবিদরা প্রিন্টারে কম্পিউটার সংযুক্ত করার অনুরোধ প্রেরণের জন্য জিইউআই ব্যবহার করে যা এটি সংযুক্ত হওয়ার কথা। এটি একটি 'অনুরোধ', খ / সি তাদের এডি তে অনুমতি নেই।

** একটি সাধারণ ব্যাকএন্ড স্ক্রিপ্টটি ফোল্ডারটি দেখে এবং আমি উল্লিখিত প্রিন্টার গ্রুপটিতে কম্পিউটার যুক্ত করি। সুতরাং, যদি আপনি ইতিমধ্যে জানেন যে কে প্রিন্টারটি পাওয়া উচিত, দুর্দান্ত, আপনি সহজেই এটি করতে পারেন। গ্রুপগুলিতে কম্পিউটার যুক্ত করা AD Cmdlet এর সাথে একটি সহজ কাজ।

** কোনও নতুন মুদ্রণ সারি রয়েছে কিনা তা দেখতে আপনি মুদ্রক সার্ভারগুলি পরীক্ষা করে কোনও কাজের সময় নির্ধারণ করতে পারেন এবং এডি গ্রুপগুলির সাথে তাদের তুলনা করতে পারেন।

সুতরাং, একটি 'পরিচালিত' সমাধান তৈরি করা কিছুটা জড়িত, তবে বেসিকগুলি দিয়ে শুরু করা সহজ এবং জিপিওগুলিতে জড়িত না এমন একটি খুব নমনীয়, সহজেই ব্যবহারযোগ্য সিস্টেম যুক্ত করা চালিয়ে যাওয়া সহজ ... কিছুটা পাওয়ারশেল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.