我對 Powershell 和 stackoverflow 比較陌生,因此對錯誤感到抱歉。我一直在為自己設定這樣的作業,因此非常感謝任何幫助。
因此,我正在嘗試撰寫一個腳本來比較只有管理員才能訪問的源檔案夾的內容(包含 .ps1 腳本)和用戶可以訪問的檔案夾(包含運行 .ps1 腳本的快捷方式,這些腳本指向源檔案夾)
源檔案夾中顯示的任何內容,而快捷方式檔案夾中沒有相關檔案都將被洗掉,源檔案夾中顯示的任何內容,但不是快捷方式檔案夾中的任何內容,都會在快捷方式檔案夾中創建一個新的快捷方式(我完全不知道如何在powershell,更不用說如何進入高級選項并將其設定為以管理員身份運行)
我正在處理這個腳本的開頭,試圖以可用的格式獲取丟失的檔案名
現在這就是我所擁有的
$sourcelist = Get-ChildItem -path "C:\Users\yo\Documents\Powershell Lab\dump" | Get-ItemPropertyvalue -name "name"
$shortcutlist = Get-ChildItem -path "C:\Users\yo\Documents\Powershell Lab\fixes" | Get-ItemPropertyvalue -name "name"
$dif = Compare-Object -ReferenceObject $sourcelist -DifferenceObject $shortcutlist
$arr = $dif -split "=" -split ";"
$arr[1]
$arr[6]
$arr[11]
這輸出
abc.txt
find.ps1
hello!.txt
(仍然不知道我將如何拆分不同的檔案以便能夠參考它們以使快捷方式在以后無法正常作業)
這種使用 -split 的方法可以滿足我的需要(回傳 $shortcutlist 中缺少的檔案名),但是它需要我為盡可能多的檔案重復 $arr[x](可以分配)
到目前為止 $dif 輸出這個
InputObject SideIndicator
----------- -------------
abc.txt <=
find.ps1 <=
hello!.txt <=
試
Compare-Object -ReferenceObject $sourcelist -DifferenceObject
$shortcutlist | get-itemproperty -name "inputobject"
輸出
Cannot find path 'C:\windows\system32\@{InputObject=abc.txt; SideIndicator=<=}' because it does not exist.
即使這可行,我也不確定如何選擇每個檔案(這是另一個問題)
我修復它的一個潛在想法是將我認為是 $dif 的字串輸出變成一個物件?真的對此一無所知,所以不確定輸出是否甚至是你所說的字串。
無論如何,感謝您的寶貴時間,感謝您提供任何資訊,如果您想以完全不同的方式進行操作,請告訴我:)
最終我喜歡它來修改它,以便能夠檢查檔案夾等中檔案的內容,但現在我只是在做這個。
uj5u.com熱心網友回復:
不使用-split,而是使用cmdlet根據 的值Where-Object過濾輸出,然后使用僅獲取每個結果物件的屬性值:Compare-ObjectSideIndicatorForEach-ObjectInputObject
$sourceNoShortcutList = Compare-Object -ReferenceObject $sourcelist -DifferenceObject $shortcutlist |Where-Object SideIndicator -eq '<=' |ForEach-Object InputObject
即使這可行,我也不確定如何選擇每個檔案(這是另一個問題)
回圈結果陣列:
foreach($filename in $sourceNoShortcutList){
$filePath = Join-Path "C:\Users\yo\Documents\Powershell Lab\dump" $fileName
Remove-Item -LiteralPath $filePath
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520863.html
標籤:数组电源外壳目的格式相比
