title: Powershell - Array assignment to variable failed. Error: "Input string was not in a correct format."
body: <p>I keep getting following error messages whenever I try to run my Powershell script:</p>
  
  <pre><code>Array assignment to [csr] failed: Cannot convert value "csr" to type "System.Int32". Error: "Input string was not in a correct format.".
  At C:\fcheck\run-new.ps1:38 char:38
  +         $Applications[$appname][$os][ &lt;&lt;&lt;&lt; $lob]=@()
      + CategoryInfo          : InvalidOperation: (System.Object[]:Object[]) [], RuntimeException
      + FullyQualifiedErrorId : ArrayAssignmentFailed
  
  Array assignment to [csr] failed: Cannot convert value "csr" to type "System.Int32". Error: "Input string was not in a correct format.".
  At C:\fcheck\run-new.ps1:42 char:38
  +         $Applications[$appname][$os][ &lt;&lt;&lt;&lt; $lob]+=$location
      + CategoryInfo          : InvalidOperation: (c$\temp:String) [], RuntimeException
      + FullyQualifiedErrorId : ArrayAssignmentFailed
  
  Array assignment to [csr] failed: Cannot convert value "csr" to type "System.Int32". Error: "Input string was not in a correct format.".
  At C:\fcheck\run-new.ps1:38 char:38
  +         $Applications[$appname][$os][ &lt;&lt;&lt;&lt; $lob]=@()
      + CategoryInfo          : InvalidOperation: (System.Object[]:Object[]) [], RuntimeException
      + FullyQualifiedErrorId : ArrayAssignmentFailed
  
  Array assignment to [csr] failed: Cannot convert value "csr" to type "System.Int32". Error: "Input string was not in a correct format.".
  At C:\fcheck\run-new.ps1:42 char:38
  +         $Applications[$appname][$os][ &lt;&lt;&lt;&lt; $lob]+=$location
      + CategoryInfo          : InvalidOperation: (c$\temp:String) [], RuntimeException
      + FullyQualifiedErrorId : ArrayAssignmentFailed
  </code></pre>
  
  <p>It seems to be coming from the following lines</p>
  
  <pre><code>Import-CSV applications.csv | ForEach-Object {
      $appname = $_.appname.ToLower()
      $os = $_.os.ToLower()
      $lob = $_.lob.ToLower()
      $location = $_.location.ToLower()
  
      if ($Applications.Keys -notcontains $appname) {
          $WindowsOS=@{}
          $WindowsOS["windows xp"]=@()
          $WindowsOS["windows 7"]=@()
          $Applications[$appname]=$WindowsOS
      } 
  
      if ($Applications[$appname][$os].Keys -notcontains $lob) {
          $Applications[$appname][$os][$lob]=@()
      }
  
      if ($Applications[$appname][$os][$lob].Keys -notcontains $location) {
          $Applications[$appname][$os][$lob]+=$location
      }
  }
  </code></pre>
  
  <p>Any idea how I can resolve it?</p>