最有可能的是我对PowerShell不了解的一些基本知识。我甚至不喜欢在编写中等大小的管道时,抓住一个属性会破坏工作流程,因为必须将语句放在语句周围,例如。
(Get-ChildItem ~\.gitconfig).Length
这很乏味。因为Length
看起来非常像一个财产,人们会想
Get-ChildItem ~\.gitconfig | Get-ItemPropertyValue -Name Length
会工作。但事实并非如此。看一下File System PSDrive提供程序返回的System.IO.FileSystemInfo
对象的接口,可以看到它没有Length属性。但它确实有FullName属性
Get-ChildItem ~\.gitconfig | Get-ItemPropertyValue -Name FullName
按预期工作。要使用管道检索文件的大小(Length
),必须使用Select-Object
和-ExpandProperty
之类的
Get-ChildItem ~\.gitconfig | Select-Object -ExpandProperty Length
如果条目是对象或属性,如何在对象之后放置.
并迭代选项卡完成的结果?令人讨厌的是,即使是常见的操作也会让人感到困惑,例如阅读环境变量
Get-Item -Path Env:\USERNAME
回报
Name Value
---- -----
USERNAME mnagy
如果它是一个项目,Get-ItemProperty
和Get-ItemPropertyValue
必须在这里发挥作用。由于结果的名称:价值结构,新人可能很想获得实际价值
Get-Item -Path Env:\USERNAME | Get-ItemPropertyValue
或实际阅读如何使用Get-ItemPropertyValue
修改查询
Get-ItemPropertyValue -Path Env:\ -Name USERNAME
这实际上导致了
Get-ItemPropertyValue : Cannot use interface. The IPropertyCmdletProvider interface is not supported by this provider.
At line:1 char:1
+ Get-ItemPropertyValue -Path Env:\ -Name USERNAME
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotImplemented: (:) [Get-ItemPropertyValue], PSNotSupportedException
+ FullyQualifiedErrorId : NotSupported,Microsoft.PowerShell.Commands.GetItemPropertyValueCommand
整个结构似乎与我完全不一致并且最令人烦恼,但希望不是设计,而是因为我从错误的角度看待它。
第一个注意事项:qazxsw poi,qazxsw poi目录,对我来说很合适(给你里面的文件数量):
Length
我倾向于使用.hg
来检查支持什么和不支持什么。
如果我检查它的目录Ps C:\> (Get-ChildItem .hg).Length
18
:
get-member
一个人如何知道是否放置一个。在一个对象之后并迭代完成选项卡的结果,如果该条目是一个对象或一个属性?
你用reports
检查一下。
对于(Get-ChildItem reports) | gm
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
LinkType CodeProperty System.String LinkType{get=GetLinkType;}
Mode CodeProperty System.String Mode{get=Mode;}
Target CodeProperty System.Collections.Generic.IEnumerable`1[[System.String, mscorlib, Version=...
AppendText Method System.IO.StreamWriter AppendText()
CopyTo Method System.IO.FileInfo CopyTo(string destFileName), System.IO.FileInfo CopyTo(s...
Create Method System.IO.FileStream Create()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)
CreateText Method System.IO.StreamWriter CreateText()
Decrypt Method void Decrypt()
Delete Method void Delete()
Encrypt Method void Encrypt()
Equals Method bool Equals(System.Object obj)
GetAccessControl Method System.Security.AccessControl.FileSecurity GetAccessControl(), System.Secur...
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetObjectData Method void GetObjectData(System.Runtime.Serialization.SerializationInfo info, Sys...
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
MoveTo Method void MoveTo(string destFileName)
Open Method System.IO.FileStream Open(System.IO.FileMode mode), System.IO.FileStream Op...
OpenRead Method System.IO.FileStream OpenRead()
OpenText Method System.IO.StreamReader OpenText()
OpenWrite Method System.IO.FileStream OpenWrite()
Refresh Method void Refresh()
Replace Method System.IO.FileInfo Replace(string destinationFileName, string destinationBa...
SetAccessControl Method void SetAccessControl(System.Security.AccessControl.FileSecurity fileSecurity)
ToString Method string ToString()
PSChildName NoteProperty string PSChildName=jv_libgdbs_tests-20180822-Test.xml
PSDrive NoteProperty PSDriveInfo PSDrive=C
PSIsContainer NoteProperty bool PSIsContainer=False
PSParentPath NoteProperty string PSParentPath=Microsoft.PowerShell.Core\FileSystem::C:\prg_sdk\stx8-j...
PSPath NoteProperty string PSPath=Microsoft.PowerShell.Core\FileSystem::C:\prg_sdk\stx8-jv_swin...
PSProvider NoteProperty ProviderInfo PSProvider=Microsoft.PowerShell.Core\FileSystem
Attributes Property System.IO.FileAttributes Attributes {get;set;}
CreationTime Property datetime CreationTime {get;set;}
CreationTimeUtc Property datetime CreationTimeUtc {get;set;}
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property string DirectoryName {get;}
Exists Property bool Exists {get;}
Extension Property string Extension {get;}
FullName Property string FullName {get;}
IsReadOnly Property bool IsReadOnly {get;set;}
LastAccessTime Property datetime LastAccessTime {get;set;}
LastAccessTimeUtc Property datetime LastAccessTimeUtc {get;set;}
LastWriteTime Property datetime LastWriteTime {get;set;}
LastWriteTimeUtc Property datetime LastWriteTimeUtc {get;set;}
Length Property long Length {get;}
Name Property string Name {get;}
BaseName ScriptProperty System.Object BaseName {get=if ($this.Extension.Length -gt 0){$this.Name.Re...
VersionInfo ScriptProperty System.Object VersionInfo {get=[System.Diagnostics.FileVersionInfo]::GetVer...
,您可以再次检查:
Get-Member
现在检查USERNAME(您看到要询问的密钥及其值):
Get-Item -Path Env:\USERNAME