2016-09-02 3 views
0

스크립트/하나의 라이너를 작성하려고합니다.이 스크립트는 특정 폴더에서 10 시간 이상 전에 수정 된 파일을 찾으며,없는 경우 몇 가지 값이나 문자열을 출력하는 데 필요한 파일.PowerShell 스크립트 파일 수정 시간이> 10h이고 아무 것도 발견되지 않는 경우 값을 반환합니다.

Get-ChildItem -Path C:\blaa\*.* | where {$_.Lastwritetime -lt (date).addhours(-10)}) | Format-table Name,LastWriteTime -HideTableHeaders" 
내가 와 파일을 10 시간 이상 시간을 수정할가 원하는 결과를 얻고 하나 라이너와

하지만 결과가없는 경우 또한, 값/문자열을 인쇄 할 필요 나는 할 수 있도록 올바르게 모니터하십시오. 이유는 모니터링 목적으로 스크립트/하나의 라이너를 이용하는 것입니다.

답변

1

해당 cmdlet Get-ChildItem 및 where 절에 아무것도없는 경우 null이 반환됩니다. 별도로 계정을 처리해야합니다. I would also caution the use of Format-Table for output unless 방금 ​​화면을 읽기 위해 사용하고 있습니다. "원 라이너"를 원한다면 이렇게 할 수 있습니다. 모든 PowerShell 코드는 원하는 경우 하나의 라이너가 될 수 있습니다.

$results = Get-ChildItem -Path C:\blaa\*.* | where {$_.Lastwritetime -lt (date).addhours(-10)} | Select Name,LastWriteTime; if($results){$results}else{"No files found matching criteria"} 

코드에 괄호가 추가되었습니다. 복사본 아티팩트 일 수 있으므로 제거해야했습니다. 제대로 코딩 된 코드는 다음과 같습니다.

$results = Get-ChildItem -Path "C:\blaa\*.*" | 
    Where-Object {$_.Lastwritetime -lt (date).addhours(-10)} | 
    Select Name,LastWriteTime 

if($results){ 
    $results 
}else{ 
    "No files found matching criteria" 
} 
+0

감사합니다. 이것은 트릭을하는 것처럼 보였고 모니터링 플랫폼이 특정 문자열이 있는지 여부를 찾는 이후 화면 읽기에만 관심이있었습니다. – knob