ใช้ Powershell แบบอักษรเพื่อทำการลบ ShellIconOverlayIdentifiers บนหน้าต่าง

0

คำถาม

ตอนนี้ผมหงุดหงิดมากโดย Dropbox และ Nextcloud ซึ่งทั้งสองต่อสู้ที่ ShellIconOverlayIdentifier รายการ ปัญหาซึ่งหลายคนที่ดูเหมือนว่าจะมีตอนที่คุณค้นหาบนอินเทอร์เน็ต.

ตอนนี้ฉันต้องการจะรวมของฉัน annoyance กับเจตนาของฉันจะเรียนรู้ powershell(7.2.0).

ฉันเริ่มกันตามสคริปต์ซึ่งจะดึงข้อมูทั้งกุญแจ และหลังจากนั้นฉันต้องการใช้ regex ผ่านทาง -match หารายการฉันต้องการแบบอักษรเพื่อทำการลบเลย สำหรับตอนนี้ผมทำงานกับทั้งสอง Remove-Item -WhatIf แล้ว Get-ItemProperty เพื่อทดสอบมัน

ตอนนี้ปัญหาของฉันคือฉันสามารถสร้างของรายการที่คิดไว้ แต่ตอนที่ผมป้อนรายการไปลบคำสั่งฉันเข้าใจว่าเส้นทางที่ไม่สามารถพบ ฉันทำอะไรผิดเหรอ?

Push-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

$list = Get-ChildItem -Path .

$filteredList = $list -match "DropboxExt10"

$filteredList

# Remove-Item -WhatIf -Recurse $filteredList
Get-ItemProperty $filteredList

Pop-Location

ข้อผิดพลาดคือ Cannot find path 'Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\ DropboxExt10' because it does not exist. Apparantly มันเพิ่มเส้นทางที่เป็นพาธเชิงสัมพันธ์สำหรับตำแหน่งปัจจุบัน. ทำไมมันไม่แปเป็นการความปลอดภัยเส้นทาง? ตอนที่ฉัน ommit ที่ผลัก-สถานที่ส่วนหนึ่งมัน trys ลงชื่อเพื่อเพิ่มเส้นทางของปัจจุบันไดเรกทอรีทำงานอยู่ซึ่งสคริปต์อยู่ แต่นี่มันผิดเช่นกัน

ขอบคุณสำหรับคุณช่วยล่วงหน้า

powershell registry windows
2021-11-16 19:48:52
1

คำตอบที่ดีที่สุด

1

ใช้หนึ่งจากเกิดข้อผิดพลาดต่อไปนี้:

$filteredList | Remove-Item -WhatIf -Recurse

# Alternatively:
Remove-Item -LiteralPath $filteredList.PSPath -WhatIf -Recurse

ที่อยู่เหนือคำสั่งของโปรดแน่ใจว่าลงชื่อรายการ(กุญแจ)เป็นมีพันธะร่วมกันด้วยพวกเขา เต็มผู้ให้มีคุณสมบัติทาง ที่จะ Remove-Item's -LiteralPath พารามิเตอร์,พวกเขาผ่านทาง .PSPath ทรัพย์สิน;ในกรณีของ ลงชื่อเส้นทางที่เป็นเส้นทางผู้ให้บริกาจะถูกนำ Microsoft.PowerShell.Core\Registry:: (หรือว่าถ้าจนกว่าคุณจะมีอะไรที่ originating ศูนย์ควบคุม kde ในโมดูล ไม่ได้ก็ต้องการ, Registry::อย่างที่เคยอยู่ในของคุณ Push-Location เรียก)

สิ่งที่ดูเหมือนจะเกิดขึ้นคืนนั้นเมื่อรายการเป็น stringified -นั่นคือสิ่งที่เกิดขึ้นเมื่อคุณมองผ่านพวกเขา เป็นทั้งหมด, เหมืเถียงกัน (e.g. Remove-Item $filteredlistซึ่งมันก็เหมือนกัน Remove-Item -Path $filteredlist)พวกเขา ขาดความตั้งใจที่ผู้ให้คำอุปสรรค และเป็นตัวแทนที่ ลงชื่อ-เป็นชนพื้นเมืองที่เส้นทาง.

และจากนั้นเต็มลงชื่อ-เป็นชนพื้นเมืองที่เส้นทางอย่างเช่น HKEY_LOCAL_MACHINE\... ก็เหมือนกันจะเริ่มด้วย ขับรถ specification หรือกับ \ หรือ /มันรู้มาเป็น มุมมอง เส้นผลที่เกิดจากการที่อาการคุณเห็น

2021-11-16 21:21:42

ขอบคุณสำหรับการที่ซับซ้อนคำอธิบาย ทั้งสอง variants ทำงาน ที่จริงฉันมาขึ้นกับคนที่สามทางออกหรอกนะ คุณช่วยเพิ่มมันให้คำตอบของคุณดังนั้นเรามีตัวเลือกทั้งหมดอยู่ที่นี่? foreach ($item in $filteredList) {Remove-Item -WhatIf -Recurse Registry::$item}. ที่จริงแล้วฉันก็เริ่มจะชอบ Powershell. แต่ดูจากเวอร์ชั่นของฉันไม่ได้ทำงานแต่ครั้งแรกขอเธอแต่งงานทางไหนทำให้ผมสงสัยว่า
Gunter

ขอบคุณสำหรับการยอมรับ,Gunter;ฉันดีใจที่เป็นการอธิบายคือช่วยได้มากเลย จริงๆแล้วให้ว่าวิธีแก้ปัญหาต่างๆที่อยู่ในคำตอบมากกว่า concise(ไม่มีเรื่องและรวดเร็วกว่า foreach-วงแก้ปัญหาฉันไม่คิดว่าอย่างหลัมันมีค่าพอที่จะเพิ่ม. ใช่มันยังไม่ชัดเจนว่าทำไม $filteredList | Remove-Item -WhatIf -Recurse ทำงาน(ดูมอดูล นี้ตอบ),และผู้แปรผ่านทางเป็นผิดหวังจริงๆ แต่แม้ว่าทุกอย่างเรื่องหูดล่ะ,PowerShell มีมากมายจะเสนอได้หมด
mklement0

ขอบคุณสำหรับเพิ่มเติมเชื่อมต่อ ฉันเห็นว่าฉันต้องเรียนรู้ค่อนข้างจะเข้าใจว่า Powershell cmdlets นเป็นการประมวลผลข้อมูล แล้วก็ขอบคุณสำหรับชี้ว่าควทางออกจะอันที่จริงเป็นช้าลง จริง Powershell มีมากมายจะเสนอได้หมด ฉันอยู่ในปัจจุบันชอบมันจริงๆสำหรับ automating ซึ่งใช้ค่อนข้างเป็นสองสามเลยนะไม่อย่างนั้น(restarting การบริการ,การลบลงชื่อรายการ,restarting explorer.exe). ดังนั้นฉันคิดว่าเป็นความรักรักเกลียด-ความสัมพันธ์กับ powershell สำหรับตอนนี้:-)
Gunter

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่