0

この単純なスクリプトでは、入力ファイルが存在する場合、ifステートメントは正常に機能しますが、入力ファイルが存在しない場合、このエラーが発生して完了します。

Get-Content : Cannot find path 'C:\scripts\importfile.txt' because it does not exist.
At C:\Scripts\CLI_Localadmins.ps1:18 char:36
+     If (!($FileExists)) {$Computers = Get-Content -Path 'c:\scripts\importfile.txt'
+                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\scripts\importfile.txt:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand*

これは私が使用しているコードです:

#Check if import file exists.
$ChkFile = "c:\scripts\importfile.txt" 
$ValidPath = Test-Path $ChkFile -IsValid
If ($ValidPath -eq $True) {$Computers = Get-Content -Path    'c:\scripts\importfile.txt'
}     
Else {$Computers = Get-QADComputer -SizeLimit 0 | select name -ExpandProperty name
}
# Give feedback that something is actually going on 
4

3 に答える 3

0

条件の問題は、実際に存在するかどうかではなく、有効なパスであるTest-Path $ChkFile -IsValidかどうかのみをチェックすることです。$ChkFile存在をテストしたい場合は、削除する必要があります-IsValid。また、 は-LiteralPathデフォルトTest-Pathでパスを正規表現として扱うため、パスに角かっこなどの特殊文字が含まれていると問題が発生するため、 の使用をお勧めします。

#Check if import file exists.
$ChkFile = "c:\scripts\importfile.txt" 
if (Test-Path -LiteralPath $ChkFile) {
  $Computers = Get-Content $ChkFile
} else {
  $Computers = Get-QADComputer -SizeLimit 0 | select -Expand name
}
于 2013-08-19T14:48:08.607 に答える