私はファイル名の単一の列(セルごとに1つ)を含む.csvドキュメントを読み込んで各ファイルのより大きなフォルダを検索するスクリプトの作成に取り組んでいます提供ファイル名を照合し、使用して「所有者」を識別します。.csvをインポートしてファイル名と対応する所有者のリストを作成する
(get-acl $file).owner
を現在、私は、個々の部品を行うことができ、コードのいくつかのビットを持っているが、私はそれをすべて一緒同点に苦労しています。理想的には、ユーザーは単に.csvファイルにファイル名を入力し、スクリプトを実行して各ファイル名とその所有者を識別する2つ目の.csvまたは.txtを出力することができます。フォーマットは以下のように表示されます
CSVは、(ASINsがあるヘッダー):ヘッダなしの
ASINs
B01M8N1D83.MAIN.PC_410
B01M14G0JV.MAIN.PC_410
プルファイル名:
$images = Get-Content \\path\ASINs.csv | Select -skip 1
は、完全なファイル名/パスを引くために、より大きなフォルダ内の画像を検索(機能していません):
ForEach($image in $images) {
$images.FullName | ForEach-Object
{
$ASIN | Get-ChildItem -Path $serverPath -Filter *.jpg -Recurse -ErrorAction SilentlyContinue -Force | Set-Content \\path\FullNames.csv
}
}
この時点で、FullNames.cが提供する完全なファイルパスを使用したいと思います。上述を使用して、ネイティブの場所にあるファイルから所有者をプルするSV:
(get-acl $file).owner
誰もが一つの流体スクリプトに一緒にこれらを結びつける方法任意のアイデアを持っていますか?
EDIT は、私は、ファイル名のいずれかを読んで、ループなしで動作するには、以下の得ることができたが、複数のファイル名があるように私はループにそれを必要とします。
新しいCSV形式:
BaseName
B01LVVLSCM.MAIN.PC_410
B01LVY65AN.MAIN.PC_410
B01MAXORH6.MAIN.PC_410
B01MTGEMEE.MAIN.PC_410
新しいスクリプト:
$desktopPath = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::Desktop)
$images = $desktopPath + '\Get_Owner'
Get-ChildItem -Path $images | Select BaseName | Export-Csv $desktopPath`\Filenames.csv -NoTypeInformation
$serverPath = 'C:\Users\tuggleg\Desktop\Archive'
$files = Import-Csv -Path $desktopPath`\Filenames.csv
While($true) {
ForEach ($fileName in $files.BaseName)
{
Get-ChildItem -Path $serverPath -Filter "*$fileName*" -Recurse -ErrorAction 'SilentlyContinue' |
Select-Object -Property @{
Name='Owner'
Expression={(Get-Acl -Path $_.FullName).Owner}
},'*' |
Export-Csv -Path $desktopPath`\Owners.csv -NoTypeInformation
}
}
ループの問題上の任意のアイデア?みんな、ありがとう!
はあなたが結合しようとしている部品を提供することはできますか? csvのサンプルと並んで(ほんの数行で十分でしょう) – TheIncorrigible1
あなたの質問に書式を付けてください。 – TheIncorrigible1
が追加情報を要求通りに追加しました。 – Garrett