Get-ItemProperty upang siyasatin ang mga katangian ng file at pag-encrypt sa Windows

Huling pag-update: 10/10/2025
May-akda: Isaac
  • Binibigyang-kahulugan ang mga katangian ng EFS at OneDrive sa pamamagitan ng pag-convert ng integer sa System.IO.FileAttributes at pagsuri sa mga flag.
  • Gamitin ang Get-ItemProperty sa FileSystem at Registry; maiwasan ang mga malalayong sorpresa sa Out-String o pagbabasa ng mga partikular na halaga.
  • Kinukumpleto ang EFS ng CMS (Protect/Unprotect-CmsMessage) para sa portable content encryption.

Naka-encrypt na Mga Katangian ng File sa Windows gamit ang PowerShell

Kung nagtatrabaho ka Windows y PowerShell, sa malao't madali kailangan mong suriin ang mga katangian ng mga naka-encrypt na file at folder, sa pamamagitan man ng katutubong EFS Encryption, ng mga file na protektado sa pamamagitan ng CMS o ng pag-uugali ng OneDrive Files On-Demand na nagdaragdag ng mga espesyal na flag sa file system. Sa lahat ng mga senaryo na ito, Get-ItemProperty Ito ay ang wrench na nagpapahintulot sa iyo na basahin ang mga katangian nang tumpak at, bilang karagdagan, malayang gumagalaw sa Registry at iba pang mga bodega salamat sa Mga provider ng PowerShell.

Sa gabay na ito ipinapaliwanag ko, na may mga tunay na halimbawa at ilang mga pamamaraan, kung paano kumonsulta, bigyang-kahulugan at i-diagnose ang mga katangian (kabilang ang mga cloud-specific), kung paano ilista at basahin ang mga halaga ng registry na may parehong cmdlet, kung paano maiwasan ang mga pitfalls kapag nag-e-execute nang malayuan, at kung paano umakma sa pag-encrypt ng file gamit ang CMS ecosystem upang i-encrypt/i-decrypt ang nilalaman. Lahat ng ito, sa comandos handa nang kopyahin at i-paste, at mabubuting gawi para wala kang maiiwan.

Ano ang Get-ItemProperty at bakit ito susi para sa mga katangian at pagpaparehistro?

Paggamit ng Get-ItemProperty sa PowerShell

Ang cmdlet Get-ItemProperty nakakakuha ng mga katangian ng mga elementong inilalantad ng mga supplier PowerShell. Kabilang dito ang mga file at folder (FileSystem), ngunit pati na rin ang mga susi at halaga sa Registro, mga certificate, environment variable, alias, atbp. Sa kaso ng file system, lalo kaming interesado sa pagmamay-ari katangian, na nakapaloob sa mga flag ng file o direktoryo, kasama ang Naka-encrypt (EFS) at mga tagapagpahiwatig ng OneDrive bilang Naka-pin, Na-unpin o RecallOnDataAccess.

Ang pinaka ginagamit na syntax ay direkta: Get-ItemProperty. Maaari kang mag-filter ayon sa pangalan ng property gamit ang -Name, pumasa sa mga literal na landas na may -LiteralPath at paggamit -Salain, -Isama y -Ibukod kapag sinusuportahan ito ng provider (FileSystem ay). Gayundin, Mga Karaniwang Parameter tulad ng -Verbose, -ErrorAction o -OutVariable ay magagamit upang pahusayin ang mga diagnostic habang sinisiyasat ang mga sensitibong katangian.

Mahahalagang Syntax at Parameter (na may pagtuon sa FileSystem at Registry)

Upang gumana nang kumportable ito ay maginhawa upang magkaroon sa kamay ang sinusuportahang syntax sa pamamagitan ng cmdlet, parehong may mga regular na landas at may literal na mga landas kung saan hindi mo nais ang wildcard na interpretasyon:

Halimbawa ng syntax A:
Get-ItemProperty <String[]> <String[]>] >] >]

Halimbawa ng syntax B:
Get-ItemProperty <String[]>] -LiteralPath <String[]> >] >]

Ang pinakakapaki-pakinabang na mga parameter para sa aming layunin ay -Daan y -Name (upang pumili ng mga partikular na katangian), -LiteralPath (pinipigilan ang mga wildcard na bigyang-kahulugan), mga tagapili -Isama y -Ibukod (nagpapatakbo sila sa nilalaman kapag isinama mo ang mga wildcard, halimbawa C:\Windows\*), at ang -Salain mula sa FileSystem provider na mas mahusay sa antas ng engine kaysa sa pag-filter sa ibang pagkakataon sa PowerShell.

Isang praktikal na tala: -Credential Ito ay umiiral, ngunit ang pagiging kapaki-pakinabang nito sa lokal na FileSystems ay limitado; makatuwiran ito sa mga malalayong provider o kung kailan i-mount mo ang PSDrides may mga kredensyal. At huwag kalimutan na ang cmdlet ay tumatanggap Mga landas sa pagpapatala ng uri HKLM:\ y Registry::, na nagpapahintulot sa iyo na magtrabaho kasama ang mga susi at halaga na parang mga file, na ginagawang mas madali ang pag-audit.

Mabilis na mga halimbawa upang magpainit

Tingnan natin ang ilang simpleng halimbawa na naglalatag ng saligan bago tayo sumisid EFS at OneDrive:

Siyasatin ang isang partikular na direktoryo at tingnan ang lahat ng magagamit na mga katangian nito (kasama ang Mga Katangian):
Get-ItemProperty C:\Windows

Ilista ang lahat ng mga katangian ng isang partikular na file sa format ng listahan, kapaki-pakinabang kapag gusto mong makita kung ito ay lilitaw Naka-encrypt o mga flag ng ulap:
Get-ItemProperty C:\Test\Weather.xls | Format-List

Registry: Basahin ang halaga ng ProgramFilesDir sa CurrentVersion, kapaki-pakinabang kapag nag-automate ng imbentaryo:
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name 'ProgramFilesDir'

Log: ilista ang lahat ng mga entry sa ilalim ng PowerShellEngine upang makita ang mga pangalan at data ng halaga:
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine

Tamang pagbibigay-kahulugan sa mga katangian: EFS, OneDrive, at iba pang mga flag

Ang bukid katangian ay isang mga flag enum ng .NET () na maaaring ibalik bilang text ("Nakatago, ReadOnly, …") o bilang buong bilang kapag ni-query mo ito sa ilang partikular na konteksto (hal. ilang OneDrive path na may Get-ItemProperty). Upang maiwasang mawala, pinakamainam na tahasang i-cast ang halaga sa isang enumeration at suriin indibidwal na mga watawat.

  Paano epektibong magbakante ng espasyo sa Google Photos

Suriin kung ang isang file ay naka-encrypt gamit ang EFS (FILE_ATTRIBUTE_ENCRYPTED = 0x4000 = 16384):
$it = Get-ItemProperty -Path 'C:\ruta\fichero.ext';
$attr = $it.Attributes;
$esEfs = $attr.HasFlag(::Encrypted);
$esEfs

I-convert ang numeroKung mas gusto mong makita ang pagsasalin ng isang "raw" na numero (hal., ang mga ibinalik ng OneDrive), maaari mong gawin ang sumusunod upang makuha ang mga pangalan ng flag:
::ToObject(, 525328)

may OneDrive Files On-Demand May mga nakalilitong kumbinasyon na kinabibilangan ng ilang "cloud" na mga flag bilang karagdagan sa mga classic (Directory, Archive, RepairPoint, Offline, atbp.). Halimbawa, ang mga halagang nakikita sa totoong buhay na mga senaryo:

  • 525328 (folder): tumutugma sa Direktoryo (0x10) + ReparsePoint (0x400) + Naka-pin (0x80000). Karaniwang nangangahulugang "palaging available sa device na ito."
  • 5248544 (file)- nabubulok bilang ReparsePoint (0x400) + Offline (0x1000) + SparseFile (0x200) + Archive (0x20) + Na-unpin (0x100000) + RecallOnDataAccess (0x400000). Tumutugma ito sa "available online" (cloud lang).

Upang patunayan ang iyong mga agnas gamit ang PowerShell, gumamit ng mga indibidwal na pagsuri sa bandila laban sa orihinal na numero, para makita mo nang eksakto kung aling mga bit ang aktibo:
$n = 5248544
$fa =
@('Directory','Archive','Hidden','System','ReadOnly','Compressed','Encrypted','Offline','ReparsePoint','SparseFile','Temporary','Pinned','Unpinned','RecallOnOpen','RecallOnDataAccess') |
ForEach-Object {
$flag = ::Parse($fa, $_)
'{0,-18} : {1}' -f $_, ((($n) -band $flag))
}

Kung ang lahat ng interesado ka ay ang pagkilala EFS encryption Bilang isang placeholder ng OneDrive, tumuon sa mga pangunahing flag na ito: Naka-encrypt (SAI), Naka-pin, Na-unpin, RecallOnOpen, RecallOnDataAccess, offline y RepairPoint. Sa ganitong paraan maaari mong ibahin ang isang file na lokal na protektado ng EFS mula sa isa na umiiral lamang bilang stub sa ulap.

Pagsagot sa mga karaniwang tanong tungkol sa mga katangian ng OneDrive at kung paano i-explore ang mga ito

Mabilis na FAQ: Ang mga numero tulad ng 525328 at 5248544 ay ang tatlong pinakamadalas itanong. Narito ang mga praktikal na sagot para sa iyong pang-araw-araw na buhay:

1) Ano ang ibig sabihin ng 525328 sa isang folder ng OneDrive? Ito ay ang kabuuan ng Direktoryo (0x10) + RepairPoint (0x400) + Naka-pin (0x80000). Sa pagsasagawa, ito ay nagpapahiwatig na ito ay isang OneDrive folder na naka-link sa cloud provider (reparse point) at minarkahan bilang "Palaging available" lokal.

2) Anong iba pang mga halaga ang mahahanap ko at paano ko matutuklasan ang mga ito? Makakakita ka ng mga kumbinasyon sa Na-unpin (0x100000), RecallOnOpen (0x40000), RecallOnDataAccess (0x400000), Offline (0x1000), bilang karagdagan sa mga klasiko archive, Nakatago, Sistema, atbp. Upang i-decode ang mga ito:

- Usa ::ToObject() upang isalin ang mga numero sa mga pangalan ng bandila.

– O patunayan nang paunti-unti gamit ang -band / HasFlag() tulad ng halimbawa sa itaas.

– Kung mas gusto mong tingnan ang teksto nang direkta para sa mga lokal na file, Kunin-Item ibinabalik ang dati nang "nalutas" na katangian ng Mga Katangian: (Get-Item 'C:\ruta\fichero').Attributes.

3) Mayroon bang higit pang mga katangian ng file bukod sa OneDrive? Oo: Naka-encrypt (SAI), Compressed, Basahin lamang, Nakatago, Sistema, archive, Pansamantala, NotContentIndexed, IntegrityStream, NoScrubData, atbp. Sa PowerShell maaari mong tuklasin ang mga ito lahat pag-enumerate sa klase:
::GetNames()

Suriin at itakda ang EFS encryption mula sa PowerShell

Upang suriin kung ang isang file ay protektado ng EFSNakita mo na ang tseke na may flag na Naka-encrypt. Kung kailangan mong mabilis na magtakda ng pag-encrypt, maaari mong gamitin ang classic cipher.exe o gamitin ang mismong katangian ng Attributes:

Paganahin ang EFS gamit ang command line:
cipher /E "C:\ruta\fichero.ext"

PowerShell (pagdaragdag ng Naka-encrypt na bandila):
$i = Get-Item 'C:\ruta\fichero.ext'
$i.Attributes = $i.Attributes -bor ::Encrypted

Kung gusto mong i-disable ang EFS, alisin lang ang flag gamit ang -band -bxor o paggamit cipher /D, na nagbibigay sa iyo ng pinong kontrol nang hindi umaalis sa PowerShell at pinapanatiling pare-pareho ang mga automation Get-ItemProperty.

Paggawa gamit ang Registry: enumeration, partikular na pagbabasa, at nabigasyon

Ang Registry sa PowerShell ay itinuturing na isa pang tindahan salamat sa provider pagpapatala. Ang mga value entry ay mga pag-aari ng bawat key, upang makita ang mga ito sa isang mas mahusay na format ang pinakamainam ay gamitin Get-ItemPropertyAng isang karaniwang daloy ay:

  Mga Paraan sa Pagpeke ng YouTube sa TV Mula sa iPhone at Android Cellphone

Tingnan ang mga pangalan ng entry (property "Property") ng isang susi:
Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | Select-Object -ExpandProperty Property

Tingnan ang mga entry na may mga pangalan at data (nababasang format):
Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Mo mag-navigate gamit ang Set-Location at paggamit . para sa kasalukuyang lokasyon, tulad ng sa file system:
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
Get-ItemProperty -Path .

Mga karaniwang spot reading na may -Name para sa mga partikular na halaga:
Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath

Upang magsulat o lumikha ng mga halaga mayroon kang magkakapatid na cmdlet: Itakda-ItemProperty, Bagong-ItemProperty, Rename-ItemProperty y Alisin-ItemProperty, na may suporta para sa mga uri tulad ng Pisi, ExpandString, binary, dword, MultiString o QWord sa pamamagitan ng RegistryValueKind.

Mag-ingat sa malayuang pagpapatupad: ang kaso ng MachineGuid

Mayroong kakaibang kakaiba sa Invoke-Command at ang Registry provider: kung tatakbo ka Get-Item sa HKLM:\Software\Microsoft\Cryptography\ malayuan, ang halaga ay maaaring MachineGuid na nakikita mo ay iyong lokal na koponan kahit na ang PSComputerName ipakita ang remote na makina. Ito ay tila may kaugnayan sa serialization ng bagay na ibinalik ng supplier.

Upang maiwasan ang mga maling pagbabasa, pilitin ang isang patag na output o i-query ang mga value gamit ang Get-ItemProperty. Ibinabalik ng dalawang variant na ito ang Tamang MachineGuid mula sa malayong koponan:
Invoke-Command -ComputerName 'PC1' -ScriptBlock { Get-Item 'HKLM:\Software\Microsoft\Cryptography\' | Out-String }
Invoke-Command -ComputerName 'PC1' -ScriptBlock { Get-ItemProperty 'HKLM:\Software\Microsoft\Cryptography\' -Name 'MachineGuid' }

Kapag ang iyong pag-audit ay nakasalalay sa mga kritikal na halaga ng Log, ito ay mas mabuti patunayan gamit ang Get-ItemProperty o i-serialize sa string bago ibalik ang tugon sa lokal na session, sa gayon ay maiiwasan ang mga nakalilitong resulta.

Mga Provider ng PowerShell at PSDrive: Ang Roadmap sa Lahat

Ang mga provider ng PowerShell ay mga .NET na bahagi na naglalantad mga data warehouse na parang mga unit (PSDrives). Salamat sa kanila, gumagana ang mga cmdlet tulad ng Get-Item, Get-ChildItem, Get-ItemProperty, o Set-Location sa FileSystem, Registry, Environment, Certificate, Variable, Function, Alias o WSman. Maaari mong ilista ang mga supplier na may Get-PSProvider at tingnan ang mga aktibong PSDrives gamit ang Get-PSDrive.

Ang ilang mga unibersal na cmdlet na walang katapusan mong gagamitin sa mga provider ay: Get-Location (gl), Itakda ang Lokasyon (cd), Copy-Item (cpi), Kunin ang Item (gi), Set-Item (kung), Get-ChildItem (dir/ls), pati na rin ang buong pamilya ItemProperty para sa Rehistro. Tandaan: magkapareho ang mga pandiwa ng mga provider, kaya parehong kalamnan, iba't ibang imbakan.

Ilang maiikling halimbawa para matulungan kang gumalaw nang madali:

  • Bansag: Set-Location Alias: y Get-ChildItem maglista ng mga alias; salain ayon sa pangalan gamit ang -Name R* o Where-Object.
  • kapaligiran: Set-Location Env: y Get-ChildItem upang makita ang mga variable; lumikha ng bago na may New-Item -Path . -Name MiVariable -Value 'texto'.
  • pagpapatala: Set-Location HKLM:\Software, Get-ChildItem para sa mga susi, Get-ItemProperty para sa data; lumikha/magtanggal gamit ang mga cmdlet ng ItemProperty.

Gumamit ng mga kaso na pinagsasama ang Get-ItemProperty sa pag-audit ng system

Kapag kumuha ka ng imbentaryo o diagnosis, Get-ItemProperty Lumilitaw ito sa hindi mabilang na mga recipe. Halimbawa, upang ilista naka-install na application pagkonsulta sa mga susi sa pag-uninstall:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Sort-Object InstallDate

O upang makita ang kasaysayan ng in-place na mga upgrade mula sa Windows mula sa Registry:
Get-ItemProperty -Path 'HKLM:\SYSTEM\Setup\Source OS*' |
Select-Object PSChildName, ProductName, ReleaseId, DisplayVersion, CurrentBuild

Sa ibang mga bahagi ng system, maaari mong dagdagan ang iyong pag-audit ng mga kilalang cmdlet at utility (hindi lahat ay gumagamit ng Get-ItemProperty, ngunit maaari silang isama sa iyong mga script): Get-Hotfix, Kumuha-WindowsUpdateLog, ipconfig / lahat, powercfg (enerhiya, sleepstudy, waketimer), Kumuha-CimInstance para sa mga device, monitor o volume, o Get-NetAdapterAdvancedProperty para sa network. Ang ideya ay, na may kontrol ang mga provider at ang Registry, mag-compose ka isang matatag na kolektor ng ebidensya at alam mo ang artifact sa Windows.

Sa ibang mga bahagi ng system, maaari mong dagdagan ang iyong pag-audit ng mga kilalang cmdlet at utility (hindi lahat ay gumagamit ng Get-ItemProperty, ngunit maaari silang isama sa iyong mga script): Get-Hotfix, Kumuha-WindowsUpdateLog, ipconfig / lahat, powercfg (enerhiya, sleepstudy, waketimer), Kumuha-CimInstance para sa mga device, monitor o volume, o Get-NetAdapterAdvancedProperty para sa network. Ang ideya ay, na may kontrol ang mga provider at ang Registry, mag-compose ka isang matatag na kolektor ng ebidensya.

  I-convert ang PDF sa Word para sa pag-edit: mga online na pamamaraan, Word, at OCR

Sa ibang mga bahagi ng system, maaari mong dagdagan ang iyong pag-audit ng mga kilalang cmdlet at utility (hindi lahat ay gumagamit ng Get-ItemProperty, ngunit maaari silang isama sa iyong mga script): Get-Hotfix, Kumuha-WindowsUpdateLog, ipconfig / lahat, powercfg (enerhiya, sleepstudy, waketimer), Kumuha-CimInstance para sa mga device, monitor o volume, o Get-NetAdapterAdvancedProperty para sa network. Ang ideya ay, na may kontrol ang mga provider at ang Registry, mag-compose ka isang matatag na kolektor ng ebidensya.

Pag-encrypt at pag-decrypt ng data gamit ang CMS: perpektong pandagdag sa attribute na Naka-encrypt

Katangian Naka-encrypt (EFS) ay nagpoprotekta sa antas ng file system. Kapag kailangan mo i-encrypt ang nilalaman Portable para sa pagbabahagi sa mga third party, ang PowerShell CMS cmdlet ay iyong kakampi: Protektahan-CmsMessage (code), Unprotect-CmsMessage (decipher) at Kumuha-CmsMessage (siyasatin ang metadata).

Mabilis na paglikha ng a sertipiko ng pag-encrypt mula sa isang INF (itakda ang Paksa sa iyong pagkakakilanlan), humiling sa certreq at pag-verify sa warehouse ng user:
certreq.exe -new DocumentEncryption.inf DocumentEncryption.cer
Get-ChildItem -Path Cert:\CurrentUser\My -DocumentEncryptionCert

Kapag handa na ang sertipiko, maaari kang mag-encrypt ng isang text file at pagkatapos i-verify/i-decrypt:

$Text = 'Texto secreto que quiero proteger';
Protect-CmsMessage -To 'cn=tu@dominio.local' -Content $Text -OutFile MiTextoCifrado.txt
Get-CmsMessage -Path .\MiTextoCifrado.txt | Unprotect-CmsMessage -To 'cn=tu@dominio.local'

Ang kumbinasyong ito ay nagbibigay-daan sa iyo upang masakop ang parehong katangian Naka-encrypt (EFS) sa disk bilang ang pag-encrypt ng mensahe para sa ligtas na palitan, at lahat ng ito ay nakikita/napapamahalaan na may parehong mga prinsipyo na pinamamahalaan mo na Get-ItemProperty.

Mga trick at format upang malinaw na ipakita ang impormasyon

Kapag sinusuri ang mga katangian, mahalaga ang pagtatanghal. Upang tingnan ang mga nababasang listahan, gamitin Format-Listahan (FL) at Format-Table (FT); kung nagtatrabaho ka sa mahabang ruta o maraming property, Out-String minsan iniiwasan ang mga sorpresa sa mga provider tulad ng Registry:

Buong format ng listahan mula sa isang file:
Get-ItemProperty 'C:\ruta\fichero.ext' | Format-List *

Tekstuwal na output (kapaki-pakinabang nang malayuan sa Invoke-Command):
Get-Item 'HKLM:\Software\Microsoft\Cryptography\' | Out-String

Upang i-export ang iyong mga natuklasan sa CSV (imbentaryo, pag-audit), piliin lamang kung ano ang nauugnay at i-save ang gamit I-export-Csv, na nagpapadali sa mga paghahambing sa hinaharap at mga pagsusuri ng third-party ng iyong kagamitan:

Get-ChildItem 'C:\Users\tu\OneDrive' -Recurse -File |
Select-Object FullName, @{n='AttrNum';e={(Get-ItemProperty $_.FullName).Attributes}}, @{n='Attributes';e={(Get-Item $_.FullName).Attributes}} |
Export-Csv C:\Temp\oneDrive_attrs.csv -NoTypeInformation -Encoding UTF8

Mga magagandang kasanayan at huling tala para maiwasan ang pagkatisod

  • Pagkakaiba sa pagitan ng EFS at cloud: Dahil lang sa isang file ay hindi "palaging available" ay hindi nangangahulugan na ito ay naka-encrypt. Tahasang hanapin ang watawat. Naka-encrypt kapag ang iyong layunin ay EFS.
  • Gumamit ng LiteralPath kung mayroong mga bihirang character sa mga path upang maiwasan ang mga ito na bigyang-kahulugan bilang mga wildcard, lalo na sa mga landas ng Registry at UNC.
  • Tagabigay ng FileSystem sumusuporta Filter: Gamitin ito para sa kahusayan kapag nag-scan ng malalaking puno ng direktoryo.
  • Invoke-Command: Kung nabasa mo ang Remote Registry, piliin Get-ItemProperty o i-serialize para i-text Out-String para maiwasan ang mga mismatches (MachineGuid case).

Sa arsenal na ito malalaman mo sa lahat ng oras kung ang isang elemento ay EFS encryption, kung ito ay a Placeholder ng OneDrive, kung paano i-decode ang tila misteryosong mga numero ng katangian, at kung paano sumandal sa Mga provider ng PowerShell upang galugarin ang Registry at iba pang mga imbakan nang walang putol. Lahat ay may mga maaaring kopyahin na halimbawa at utos na maaari mong isama sa iyong imbentaryo, pag-audit, o mga script ng seguridad nang hindi sinisira ang iyong kasalukuyang mga daloy ng trabaho.

Baguhin ang mga katangian ng file sa Windows 6
Kaugnay na artikulo:
Paano Baguhin ang Mga Katangian ng File sa Windows