0

我想記下PowerShell腳本,它應該從位於文件夾漫遊中的所有文件中刪除項目版本或語言版本「en」,如果它找到文件中的「標題」部分。從文件中刪除文件版本

我的腳本只在標題爲空的循環中的頂層文件名上工作,而不在其標題爲空的循環中的其他文件上。我怎樣才能改變這個腳本,以便它可以滾動循環,並從標題爲空的這些不同文件中刪除語言版本?

$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) 

要:

if (!($SItem)) 

然後,SN1就是隻有標題,你把它寫的,所以嘗試做$ SN1.title簡單地贏得沒有工作。另外,您查詢的來源是什麼?

編輯:回答以下:

現在,你所提供的對象類型很明顯。下面是代碼,但你需要驗證的是越來越刪除是正確的鍵/值:

$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"  
} 

除非我失去了一些東西的基礎上,獲取會員$ SN1是一個單一的項目,所以沒有必要循環任何東西。如果有不止一個地方,我沒有看到你的代碼中的指示,所以你需要提供更多的細節。該命令讀取單個標題,如果爲空,則刪除其他內容。對於標題集合,您需要提供他們居住的地方等,以獲得更多幫助。

+0

正確,因爲您的語法不正確。你可能會粘貼下面的命令輸出給我嗎?: $ SN1 = Get-ItemProperty -Path「master:/ content/www/home/company/tour/*」-Name「Title」 $ SN1 |通用汽車 對不起本站的評論friggin包裹是你的原始第一行上面的2個命令來定義$ SN1,然後運行第二個命令是管道$ SN1 | Get-Member –

+0

您需要運行命令我要求輸入$ SN1來獲取成員,我需要查看返回的是哪種對象,然後我可以用正確的代碼來幫助您。那些下面發佈的代碼我可以告訴你是不正確的,因爲他們也不知道什麼對象類型被返回,所以他們猜測。運行:「$ SN1 | Get-member」併發布輸出請 –

0

我不確定您選擇的路徑,Get-ItemProperty無法在路徑中使用*來選擇路徑中的每個項目。您必須先獲取這些項目,然後將它們傳送到Get-ItemProperty中。

您需要創建每個項目及其屬性的數組,然後遍歷這些項目。

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

然後通過每個項循環:

$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" 
    } 

} 

正如你會想,如果你有你想通過和搜索子目錄使用-Recurse上運行Get-ChildItem的說明。

+0

@ user7986299我更新了代碼,出現錯誤,應該是.FullName,而不是.FullPath。 – Paolis

+0

您必須將代碼發佈到Remove-ItemVersion,這不是我熟悉的本機Powershell命令。它有可能期望與我們提供的路徑不同,或者需要額外的參數。另外,你應該添加調試消息來幫助你知道你的代碼在做什麼。我已經在上面添加了示例。 – Paolis