$file = 'C:\path\to\some\file.doc'
# The index of the property to retrieve.
$propIndex = 24 # Comments
$folder = (New-Object -ComObject Shell.Application).NameSpace((Split-Path $file))
# Output the value of the "Comments" property.
$folder.GetDetailsOf(
$folder.ParseName((Split-Path -Leaf $file)),
24
)
$folder = (New-Object -ComObject Shell.Application).NameSpace("$pwd")
# Note: Assumes that no indices higher than 1000 exist.
0..1000 | % {
if ($n = $folder.GetDetailsOf($null, $_)) {
[pscustomobject] @{ Index = $_; Name = $n }
}
}
在我的Windows 10计算机上,这将生成:
Index Name
----- ----
0 Name
1 Size
2 Item type
3 Date modified
4 Date created
5 Date accessed
6 Attributes
7 Offline status
8 Availability
9 Perceived type
10 Owner
11 Kind
12 Date taken
13 Contributing artists
14 Album
15 Year
16 Genre
17 Conductors
18 Tags
19 Rating
20 Authors
21 Title
22 Subject
23 Categories
24 Comments
25 Copyright
26 #
27 Length
28 Bit rate
29 Protected
30 Camera model
31 Dimensions
32 Camera maker
33 Company
34 File description
35 Masters keywords
36 Masters keywords
42 Program name
43 Duration
44 Is online
45 Is recurring
46 Location
47 Optional attendee addresses
48 Optional attendees
49 Organizer address
50 Organizer name
51 Reminder time
52 Required attendee addresses
53 Required attendees
54 Resources
55 Meeting status
56 Free/busy status
57 Total size
58 Account name
60 Task status
61 Computer
62 Anniversary
63 Assistant's name
64 Assistant's phone
65 Birthday
66 Business address
67 Business city
68 Business country/region
69 Business P.O. box
70 Business postal code
71 Business state or province
72 Business street
73 Business fax
74 Business home page
75 Business phone
76 Callback number
77 Car phone
78 Children
79 Company main phone
80 Department
81 E-mail address
82 E-mail2
83 E-mail3
84 E-mail list
85 E-mail display name
86 File as
87 First name
88 Full name
89 Gender
90 Given name
91 Hobbies
92 Home address
93 Home city
94 Home country/region
95 Home P.O. box
96 Home postal code
97 Home state or province
98 Home street
99 Home fax
100 Home phone
101 IM addresses
102 Initials
103 Job title
104 Label
105 Last name
106 Mailing address
107 Middle name
108 Cell phone
109 Nickname
110 Office location
111 Other address
112 Other city
113 Other country/region
114 Other P.O. box
115 Other postal code
116 Other state or province
117 Other street
118 Pager
119 Personal title
120 City
121 Country/region
122 P.O. box
123 Postal code
124 State or province
125 Street
126 Primary e-mail
127 Primary phone
128 Profession
129 Spouse/Partner
130 Suffix
131 TTY/TTD phone
132 Telex
133 Webpage
134 Content status
135 Content type
136 Date acquired
137 Date archived
138 Date completed
139 Device category
140 Connected
141 Discovery method
142 Friendly name
143 Local computer
144 Manufacturer
145 Model
146 Paired
147 Classification
148 Status
149 Status
150 Client ID
151 Contributors
152 Content created
153 Last printed
154 Date last saved
155 Division
156 Document ID
157 Pages
158 Slides
159 Total editing time
160 Word count
161 Due date
162 End date
163 File count
164 File extension
165 Filename
166 File version
167 Flag color
168 Flag status
169 Space free
172 Group
173 Sharing type
174 Bit depth
175 Horizontal resolution
176 Width
177 Vertical resolution
178 Height
179 Importance
180 Is attachment
181 Is deleted
182 Encryption status
183 Has flag
184 Is completed
185 Incomplete
186 Read status
187 Shared
188 Creators
189 Date
190 Folder name
191 Folder path
192 Folder
193 Participants
194 Path
195 By location
196 Type
197 Contact names
198 Entry type
199 Language
200 Date visited
201 Description
202 Link status
203 Link target
204 URL
208 Media created
209 Date released
210 Encoded by
211 Episode number
212 Producers
213 Publisher
214 Season number
215 Subtitle
216 User web URL
217 Writers
219 Attachments
220 Bcc addresses
221 Bcc
222 Cc addresses
223 Cc
224 Conversation ID
225 Date received
226 Date sent
227 From addresses
228 From
229 Has attachments
230 Sender address
231 Sender name
232 Store
233 To addresses
234 To do title
235 To
236 Mileage
237 Album artist
238 Sort album artist
239 Album ID
240 Sort album
241 Sort contributing artists
242 Beats-per-minute
243 Composers
244 Sort composer
245 Disc
246 Initial key
247 Part of a compilation
248 Mood
249 Part of set
250 Period
251 Color
252 Parental rating
253 Parental rating reason
254 Space used
255 EXIF version
256 Event
257 Exposure bias
258 Exposure program
259 Exposure time
260 F-stop
261 Flash mode
262 Focal length
263 35mm focal length
264 ISO speed
265 Lens maker
266 Lens model
267 Light source
268 Max aperture
269 Metering mode
270 Orientation
271 People
272 Program mode
273 Saturation
274 Subject distance
275 White balance
276 Priority
277 Project
278 Channel number
279 Episode name
280 Closed captioning
281 Rerun
282 SAP
283 Broadcast date
284 Program description
285 Recording time
286 Station call sign
287 Station name
288 Summary
289 Snippets
290 Auto summary
291 Relevance
292 File ownership
293 Sensitivity
294 Shared with
295 Sharing status
297 Product name
298 Product version
299 Support link
300 Source
301 Start date
302 Sharing
303 Availability status
304 Status
305 Billing information
306 Complete
307 Task owner
308 Sort title
309 Total file size
310 Legal trademarks
311 Video compression
312 Directors
313 Data rate
314 Frame height
315 Frame rate
316 Frame width
317 Spherical
318 Stereo
319 Video orientation
320 Total bitrate
2条答案
按热度按时间ni65a41a1#
Shell.Application
COM API)**读取 * 此类 * 扩展文档属性 * -请参见下一节。*对于通过.NET / PowerShell 更新 (编辑)属性:
*非官方的第三方NuGet包是Windows API周围的.NET Package 器,可以提供一个解决方案,如this C# answer中所示。请注意,many variations of these packages (
Microsoft.WindowsAPICodePack.*
) exist in the NuGet gallery具有许多早期包的分支,似乎已被废弃。this repo是一个似乎仍在维护的分支的示例。对于 * 图像文件,虽然更新属性需要变通方法,但标准.NET API * 确实 * 存在:参见
System.Drawing.Image.GetPropertyItem
New-Object -ComObject Word.Application
; this documentation可以提供进一步的信息。*.docx
文件)安装了文件资源管理器扩展,则可以通过文件资源管理器中的“属性”对话框 * 交互地 、 修改 * -但不能 * 添加 * -属性。*以编程方式阅读 * 文档属性:
注意,所有属性值都以 * 字符串 * 的形式返回,如果目标属性没有填充,则返回 * 空字符串 *(
''
);尝试将0
(文件名)作为标准属性,以验证调用原则上是否有效。下面的代码查找所有支持的属性名称的索引:
在我的Windows 10计算机上,这将生成:
yr9zkbsy2#
在我的脑海中,我认为您可能可以通过使用COM对象来完成它
现在在
$sFile
对象上执行Get-Member
,所以$sFile | Get-Member
。如果您看到属性Comments
有一个setter,您应该能够更改它。它将在Definition
下有{get} {set}
。设置它应该像$sFile.Comments = "blah blah blah"
一样简单