পাওয়ারশেলে কেন "সন্ধান" করা যাবে না?


4

find.exeপরামিতিগুলি যখন পাওয়ারশেল কনসোল শেল ব্যবহার করা হয় তখন কী আপত্তিজনক তা খুঁজে পায় ?

এই কমান্ডগুলি cmd.exeশেলের মধ্যে প্রত্যাশার মতো কাজ করে :

PS C:\Windows\System32\WindowsPowerShell\v1.0> find /i "System.Diagnostics.Process" *.ps1xml
FIND: Parameter format not correct
PS C:\Windows\System32\WindowsPowerShell\v1.0> find /i "System.Diagnostics.Process" *.ps1xml
FIND: Parameter format not correct
PS C:\Windows\System32\WindowsPowerShell\v1.0> C:\Windows\System32\find.exe /i "System.Diagnostics.Process" *.ps1xml
FIND: Parameter format not correct
PS C:\Windows\System32\WindowsPowerShell\v1.0> C:\Windows\System32\find.exe /i "System.Diagnostics.Process" .\DotNetTypes.format.ps1xml
FIND: Parameter format not correct

এটি পাওয়ারশেল কমান্ড নয়? এক্সিকিউটেবল
আইপনফিগ

এটি ছাড়া অন্য কী ব্যবহার করছে C:\Windows\SYSTEM32\find.EXE?
লিখিত

আপনি ঠিক কি করতে চেষ্টা করছেন? আপনার তৃতীয় উদাহরণটি অবৈধ বাক্য গঠন ব্যবহার করে
রামহাউন্ড

প্রকৃতপক্ষে আমি ঠিক একই কমান্ডটি চেষ্টা করেছি এবং এটি পাওয়ারশেলের ক্ষেত্রে ব্যর্থ হয়েছে যখন সেমিডিতে সঠিক আউটপুট দেয়। তাছাড়া where findcmd কমান্ড কাজ করে কিন্তু PowerShell মধ্যে না
phuclv

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

উত্তর:


4

চেষ্টা করুন:

find /i "`"System.Diagnostics.Process`"" *.ps1xml

আমি ব্যবহৃত Sysmon.exe মৃত্যুদণ্ডের তুলনা করতে PowerShell.exeএবং cmd.exe:

Cmd.exe এর জন্য:

 Image: C:\Windows\System32\find.exe
 CommandLine: find  /i "System.Diagnostics.Process" *.ps1xml
 ParentImage: C:\Windows\System32\cmd.exe

পাওয়ারশেলের জন্য:

 Image: C:\Windows\System32\find.exe
 CommandLine: "C:\Windows\system32\find.exe" /i System.Diagnostics.Process *.ps1xml
 ParentImage: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

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



1
সুতরাং, পাওয়ারশেল কমান্ড লাইন প্যারামিটার থেকে উদ্ধৃতিগুলি কেটে ফেলবে। নিনজা। ধন্যবাদ।
লিখিত

3

পিটার হানডরফ যেমন বলেছিলেন, পাওয়ারশেল বাইরের উক্তিগুলি সরিয়ে ফেলছেন। পাওয়ারশেল কমান্ড লাইন আর্গুমেন্ট থেকে ডাবল উক্তি প্রত্যাহার দেখুন । আপনি কমান্ড লাইনে স্ট্রিং প্রতিধ্বনি করে বা লিখে এটি পরীক্ষা করতে পারেন

PS C:\> echo C:\Windows\System32\find.exe /i "System.Diagnostics.Process" *.ps1xml
C:\Windows\System32\find.exe
/i
System.Diagnostics.Process
*.ps1xml
PS C:\> "System.Diagnostics.Process"
System.Diagnostics.Process

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

পাওয়ারশেলের উদ্ধৃতি বিধি অনুসারে আপনাকে অবশ্যই দু'টি উদ্ধৃতি`backticks` বা ডাবল উদ্ধৃতি দ্বারা পালাতে হবে , অথবা কেবলমাত্র একক উদ্ধৃতিতে রেখে দিতে হবে

find.exe /i "`"System.Diagnostics.Process`"" *.ps1xml
find.exe /i """System.Diagnostics.Process""" *.ps1xml
find.exe /i '"System.Diagnostics.Process"' *.ps1xml

এরকম সরল ক্ষেত্রে যখন প্যারামিটারে জায়গা না থাকে আপনি ডাবল উদ্ধৃতিগুলি সরাসরি অন্য জোড়ের কোটায় না রেখে এড়াতে পারবেন

find.exe /i `"System.Diagnostics.Process`" *.ps1xml

তবে ভারব্যাটিম যুক্তি সহ একটি সহজ উপায় আছে--%

পাওয়ারশেল 3.0.০-তে বিশেষ চিহ্নিতকারীটি --%লাইনের কোনও অবশিষ্ট অক্ষরের ব্যাখ্যা বন্ধ করতে পাওয়ারশেলের সিগন্যাল। এটি একটি নন-পাওয়ারশেল ইউটিলিটি কল করতে এবং কিছু উদ্ধৃত পরামিতিগুলি ঠিক যেমনটি পাস করার জন্য ব্যবহৃত হতে পারে।

ফলস্বরূপ আপনি এটি এটি ব্যবহার করতে পারেন

find.exe --% "System.Diagnostics.Process" *.ps1xml

অথবা আপনি যদি ইউনিকোড সমর্থন প্রয়োজন হবে না তারপর আপনি কেবল পারবেন findসঙ্গে findstrউদ্ধৃতি চিহ্ন দরকার নেই

PS C:\Users> help | findstr command
    topics at the command line.
    The Get-Help cmdlet displays help at the command line from content in
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.