サーバーからログファイルをアーカイブするためのスクリプトを作成しました。私はすべてのものでかなり良い形をしていますが、再帰性はありません。Get-ChildItem ...PowerShell Scripting - Get-ChildItem
Get-ChildItemが再帰的でなく、1つのフィルタでのみ存在すると、問題が発生しているようです。無視されました!または、私は間違ったことをしています(おそらく)。
私は少し出力をクリーンアップしました...
PS C:\foo> Get-childitem -path "c:\foo"
Name
----
bar1.doc
bar2.doc
bar3.doc
foo1.txt
foo2.txt
foo3.txt
PS C:\foo> Get-childitem -path "c:\foo" -Include *.txt
PS C:\foo> Get-childitem -path "c:\foo" -Include *.txt -recurse
Name
----
foo1.txt
foo2.txt
foo3.txt
すっごく
???私は、再帰スイッチを持たないスクリプトのパスに分岐しなければならないという幻想を持っていました。 (ちなみに、変数の唯一の可変性がコマンドレットのパラメータである場合、コードパスが重複しないようにパラメータを可変に適用することは可能ですか?)とにかく、ここでは完全性のためのスクリプトです。 Get-ChildItem。
function MoveFiles()
{
Get-ChildItem -Path $source -Recurse -Include $ext | where { $_.LastWriteTime -lt (Get-Date).AddDays(-$days) } | foreach {
$SourceDirectory = $_.DirectoryName;
$SourceFile = $_.FullName;
$DestinationDirectory = $SourceDirectory -replace [regex]::Escape($source), $dest;
$DestionationFile = $SourceFile -replace [regex]::Escape($source), $dest;
if ($WhatIf){
#Write-Host $SourceDirectory;
#Write-Host $DestinationDirectory;
Write-Host $SourceFile -NoNewline
Write-Host " moved to " -NoNewline
Write-Host $DestionationFile;
}
else{
if ($DestinationDirectory)
{
if (-not [System.IO.Directory]::Exists($DestinationDirectory)) {
[void](New-Item $DestinationDirectory -ItemType directory -Force);
}
Move-Item -Path $SourceFile -Destination $DestionationFile -Force;
}
}
}
}
-Oisin私はちょうど私のGet-ChildItemコマンドレットのタグをクリックして投稿した後、これを見ました。 OPのように、フィルタはプロバイダ固有で、私はすでに他のもののために使っています。私はこの質問の続きだと思う。 http://stackoverflow.com/questions/790796/confused-with-include-parameter-of-the-get-childitem-cmdlet –
これは文書化された動作であり、私はRTFMする必要がありました。私は助けをしたことを誓いますが、私はそれを見ています。みんな、ありがとう! –