2017-01-01 8 views
8

मेरे पास C:\Hans\Hans4\ निर्देशिका में Eric Clapton - Nothing But The Blues - Full Concert (1994) [HQ].URL नामक एक फ़ाइल है। इस बनाने के लिएयह PowerShell स्क्रिप्ट एक त्रुटि उत्पन्न क्यों करती है?

कोड के नीचे है (हालांकि त्रुटि फ़ाइल की सामग्री की परवाह किए बिना होता है)

$fileContents = @" 
[{000214A0-0000-0000-C000-000000000046}] 
Prop3=19,2 
[InternetShortcut] 
URL=http://example.com/ 
IDList= 
"@ 

New-Item -Path "C:\Hans\Hans4" ` 
     -Name "Eric Clapton - Nothing But The Blues - Full Concert (1994) [HQ].URL" ` 
     -ItemType "file" ` 
     -Value $fileContents ` 
     -Force 

जब मैं निम्नलिखित चला मैं एक त्रुटि

Get-ChildItem 'C:\Hans' -Recurse | Resolve-ShortcutFile > Output.txt 

कोड

नीचे का संदर्भ समारोह मिलता है
function Resolve-ShortcutFile {   
    param(
     [Parameter(
      ValueFromPipeline=$true, 
      ValueFromPipelineByPropertyName=$true, 
      Position = 0)] 
     [Alias("FullName")] 
     [string]$fileName 
    ) 
    process { 
     if ($fileName -like "*.url") { 
      Get-Content $fileName | Where-Object { 
       $_ -like "url=*" 
      } | 
      Select-Object @{ 
       Name='ShortcutFile' 
       Expression = {Get-Item $fileName} 
      }, @{ 
       Name='Url' 
       Expression = {$_.Substring($_.IndexOf("=") + 1)} 
      } 
     } 
    } 
} 

यह त्रुटि संदेश

है
 
Get-Content : An object at the specified path C:\Hans\Hans4\Eric Clapton - Nothing But 
The Blues - Full Concert (1994) [HQ].URL does not exist, or has been filtered by 
the -Include or -Exclude parameter. 
At line:33 char:28 
+    Get-Content $fileName | Where-Object { 
+    ~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (System.String[]:String[]) [Get-Content], Exception 
    + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetContentCommand 

मुझे यह त्रुटि क्यों मिलती है?

+14

इस सवाल का आगंतुकों के लिए: http://meta.stackoverflow.com/questions/340658/can-someone-help-a-new-guy-to-be-good-in-asking-questions- यहां –

+0

यह सी नहीं होना चाहिए: \ हंस लेकिन सी: \ रोमन – ManOnAMission

उत्तर

15
समस्या

फ़ाइल नाम है कि करने के लिए Get-Content

सी समारोह में पहुंचाया और पारित हो जाता है है: \ हंस \ Hans4 \ एरिक क्लैप्टन - नथिंग बट द ब्लूज़ - पूर्ण कॉन्सर्ट (1994) [मुख्यालय] .url

आप समस्या का सामना कर रहे हैं here का वर्णन किया।

यह वर्ग कोष्ठक है कि एक range operator with the set H and Q

के रूप में व्याख्या कर रहे हैं तो पैटर्न मतलब यह होगा कि यह निम्न नामों से किसी के साथ फ़ाइलों की सामग्री को पढ़ने के लिए प्रयास करता है ...

  • एरिक क्लैप्टन - नथिंग बट द ब्लूज़ - पूर्ण कॉन्सर्ट (1994) एच .url
  • एरिक क्लैप्टन - नथिंग बट द ब्लूज़ - पूर्ण कॉन्सर्ट (1994) क्यू .url

... लेकिन मेल नहीं खाएगी शाब्दिक [HQ]

  • एरिक क्लैप्टन में - नथिंग बट द ब्लूज़ - पूर्ण कॉन्सर्ट (1994) [मुख्यालय] .url

आप कर सकते हैं इस समस्या से बचने के लिए -literalPath पैरामीटर का उपयोग करें और फ़ाइल नाम का शाब्दिक रूप से व्यवहार करें।

function Resolve-ShortcutFile {   
    param(
     [Parameter(
      ValueFromPipeline=$true, 
      ValueFromPipelineByPropertyName=$true, 
      Position = 0)] 
     [Alias("FullName")] 
     [string]$fileName 
    ) 
    process { 
     if ($fileName -like "*.url") { 
      Get-Content -literalPath $fileName | Where-Object { 
       $_ -like "url=*" 
      } | 
      Select-Object @{ 
       Name='ShortcutFile' 
       Expression = {Get-Item -literalPath $fileName} 
      }, @{ 
       Name='Url' 
       Expression = {$_.Substring($_.IndexOf("=") + 1)} 
      } 
     } 
    } 
} 
+0

मेरे पास इनमें से 200 फाइलें थीं और कोई भी पास नहीं हुआ था। यह लगभग 2 महीने पहले उसी स्क्रिप्ट के साथ काम करता था। लेकिन जैसे ही मैं घर वापस आऊंगा, मैं निश्चित रूप से आपके समाधान का प्रयास करूँगा। – Roman

+2

@Roman - '[मुख्यालय] 'एक नया नामकरण सम्मेलन है जिसे आप (या वेबसाइट जो आप अक्सर करते हैं और इंटरनेट शॉर्टकट बनाते हैं) अपनाया है? क्योंकि यह है कि इससे आपके मौजूदा कोड में समस्या आ रही है।अधिकांश समय आपका मौजूदा कोड ठीक काम करेगा जब तक कि यह स्क्वायर ब्रैकेट के साथ फ़ाइल नाम का सामना न करे। –

+0

वे यूट्यूब से लिंक हैं। मुझे यह नहीं पता कि यह कैसे काम करता है और अब और नहीं। हो सकता है कि उन्होंने पावरहेल अपडेट किया हो। – Roman

संबंधित मुद्दे