返回列表 发帖

[问题求助] 网上下载的PowerShell,改了改path,发现file2 识别不了,请高手指点!谢谢

$file1 = GI C:\TEMP\schlecht\Settings.xml
$file2 = GI C:\TEMP\gut\Settings.xml    #路径是对的,确认了n遍
function Compare-Files{
param(
$file1,$file2,[switch]$IncludeEqual)
$content1 = Get-Content $file1
$content2 = Get-Content $file2
$comparedLines = Compare-Object $content1 $content2 -IncludeEqual:$IncludeEqual |
group { $_.InputObject.ReadCount } # | sort Name
$comparedLines | foreach {
$curr=$_
switch ($_.Group[0].SideIndicator){
“==” { $right=$left = $curr.Group[0].InputObject;break}
“=>” { $right,$left = $curr.Group[0].InputObject,$curr.Group[1].InputObject;break }
“<=" { $right,$left = $curr.Group[1].InputObject,$curr.Group[0].InputObject;break }
}
[PSCustomObject] @{
Line = $_.Name
Left = $left
Right = $right
}
}
}COPY
下图是报警

Get-Content : Cannot bind argument to parameter 'Path' because it is null.
At C:\TEMP\PS\test_1.ps1:16 char:26
+  $content2 = Get-Content $file2
+                          ~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-Content], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentCommand

Compare-Object : Cannot bind argument to parameter 'DifferenceObject' because it is null.
At C:\TEMP\PS\test_1.ps1:17 char:44
+  $comparedLines = Compare-Object $content1 $content2 -IncludeEqual:$IncludeEqual ...
+                                            ~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand

Cannot index into a null array.
At C:\TEMP\PS\test_1.ps1:20 char:2
+  $curr=$_
+  ~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

# 2>nul&@cls&@echo off&powershell -command "&{set-executionPolicy remoteSigned}"&copy "%~f0" "%~f0.ps1">nul&powershell -file "%~f0.ps1"&del "%~f0.ps1"&pause&exit /b 0
$file1 = GI C:\TEMP\schlecht\Settings.xml;
$file2 = GI C:\TEMP\gut\Settings.xml;
function Compare-Files{
  param(
   $file1,
   $file2,
   [switch]$IncludeEqual
  )
  $content1 = Get-Content $file1;
  $content2 = Get-Content $file2;
  $comparedLines = Compare-Object $content1 $content2 -IncludeEqual:$IncludeEqual | group { $_.InputObject.ReadCount } | sort Name;
  $comparedLines | foreach {
    $curr=$_
    switch ($_.Group[0].SideIndicator){
      "==" { $right=$left = $curr.Group[0].InputObject;break}
      "=>" { $right,$left = $curr.Group[0].InputObject,$curr.Group[1].InputObject;break }
      "<=" { $right,$left = $curr.Group[1].InputObject,$curr.Group[0].InputObject;break }
    }
    [PSCustomObject] @{
      Line = $_.Name;
      Left = $left;
      Right = $right;
    }
  }
}
Compare-Files -file1 $file1 -file2 $file2 -IncludeEqual;COPY
bat 和powershell均通过。程序是对的,是不是你的策略设置有问题。

TOP

返回列表