0

ファイル内に「タイトル」セクションがある場合は、フォルダーツアーにあるすべてのファイルからアイテムバージョンまたは言語バージョン "en"を削除するPowerShellスクリプトを書き留めようとしています。ファイルからファイルバージョンを削除する

私のスクリプトは、タイトルが空ですが、タイトルが空のループ内の他のファイルではなく、トップファイル名でのみ動作します。このスクリプトを変更して、ループをスクロールしてタイトルが空のこれらの異なるファイルのそれぞれから言語バージョンを削除できるようにするにはどうすればよいですか?

$SN1 = Get-ItemProperty -Path "master:/content/www/home/company/tour/*" -Name "Title" 

$SN2 = '' 

$SN3 = 
foreach ($SItem in $SN1.Title) { 

    if ("$SItem" -eq $SN2) 
    { 
     Remove-ItemVersion -Path "master:/content/www/home/company/tour/*" -Language "en" 
    } 

} 

答えて

0

あなたの基本的な構文のスキルはあなたがテストしていると誤っタイトルの構文を使用している変数の前後に引用符を持って何らかの理由としていくつかの追加調査が必要な場合がありますように見えます。だから、最初にすべての

、変更:

if ("$SItem" -eq $SN2) 

へ:あなたはそうSN1.titleは、単に勝った$をやろうとしている、それが書かれていてその後

if (!($SItem)) 

、SN1はタイトルだけです仕事はありません。また、照会しているソースは何ですか?

EDIT下記ANSWER:あなたはそれがクリアされているオブジェクトの種類を提供したことを今

。ここでは、コードですが、あなたは正しいキー/値で削除取得されたものを検証する必要があります必要はありませんので

$SN1 = Get-ItemProperty -Path "master:/content/www/home/company/tour/*" -Name "Title"  
if ($SN1.Title -eq '') 
{ 
    Remove-ItemVersion -Path "master:/content/www/home/company/tour/*" -Language "en"  
} 

私はをGet-Member $ SN1に基づいて、何かが欠けていない限りSINGLEアイテムですが、何かをループする。複数の場所がある場合は、コードに表示されていないので、詳細を提供する必要があります。このコマンドは単一のタイトルを読み取り、空白の場合は別のタイトルを削除します。タイトルの集まりについては、彼らがどこに住んでいるかなどの情報を提供する必要があります。

+0

構文が正しくないために訂正してください。可能であれば、次のコマンドの出力を貼り付けることができますか? $ SN1 = Get-ItemProperty -Path "master:/ content/www/home/company/tour/*" --Name "Title" $ SN1 | GM $ SN1を定義する元の1行目の上に2つのコマンドがあり、次に2番目のコマンドを実行しています。$ SN1 | Get-Member –

+0

コマンドを実行する必要があります。$ SN1をget-memberにパイプを要求しました。どのオブジェクトが返されているのかを確認する必要があります。正しいコードでお手伝いできます。私があなたに言うことができる投稿コードの下には、彼らが推測しているオブジェクトタイプが返されているかどうか分からないので、正しいものではありません。実行: "$ SN1 | Get-member"と出力を投稿してください –

0

選択しているパスがわからない場合、Get-ItemPropertyはパス内の*を使用してパス内のすべてのアイテムを選択することはできません。アイテムを最初に取得してからGet-ItemPropertyにパイプする必要があります。

すべてのアイテムとそのプロパティの配列を作成し、それらのループをループする必要があります。

その後
$SN1 = Get-ChildItem -Path ""master:/content/www/home/company/tour" | Get-ItemProperty | select * 

各項目をループ:あなたはあなたが同様を検索したいサブディレクトリを持っている場合は、Get-ChildItemコマンドレットに-Recurse使用することをお勧めします注意点としては

$DebugPreference = 'Continue' 
foreach ($SItem in $SN1) 
{ 
    Write-Debug -Message "Checking item $($SItem.Name) for a title." 
    if(!($SItem.Title)) 
    { 
     Write-Debug -Message "A title does not exist for this item $($SItem.FullName), removing the language property of its ItemVersion." 
     Remove-ItemVersion -Path $SItem.FullName -Language "en" 
    } 

} 

+0

@ user7986299コードを更新しました。エラーがありました.FullPathの代わりに.FullNameにする必要があります。 – Paolis

+0

あなたが知っているネイティブのPowershellコマンドではない、Remove-ItemVersionにコードを投稿する必要があります。私たちが提供している経路とは異なるものが必要であるか、追加のパラメータが必要である可能性があります。また、コードが何をしているのかを知るためのデバッグメッセージを追加する必要があります。上記の例を追加しました。 – Paolis

関連する問題