Powershell 如何获取字符串格式的对象成员
我根本不知道我到底做错了什么,我正在运行manage-bde(返回bitlocker加密状态的命令行)并将其传输到一个select字符串,以用一个非常特定的正则表达式捕获特定的加密百分比/状态。出于某种原因,selectstring返回整行,但名为“Matches”的属性返回我需要的确切信息,但它是一个Matchinfo对象。有一个名为ToString的方法,但它根本不返回我需要的,似乎是对象信息。我只希望字符串格式的输出显示在写进度gui中 注意:对于powershell来说还是很新的Powershell 如何获取字符串格式的对象成员,powershell,Powershell,我根本不知道我到底做错了什么,我正在运行manage-bde(返回bitlocker加密状态的命令行)并将其传输到一个select字符串,以用一个非常特定的正则表达式捕获特定的加密百分比/状态。出于某种原因,selectstring返回整行,但名为“Matches”的属性返回我需要的确切信息,但它是一个Matchinfo对象。有一个名为ToString的方法,但它根本不返回我需要的,似乎是对象信息。我只希望字符串格式的输出显示在写进度gui中 注意:对于powershell来说还是很新的 $ac
$act = Invoke-Expression -Command "manage-bde -status C:" | select-string -Pattern "(?<=(Percentage Encrypted:)).*" | Select-Object -Property Matches -Last 1
$act.toString()| Out-Host
$act=Invoke Expression-Command“manage bde-status C:| select string-Pattern”(?MatchInfo对象可能会混淆。请尝试以下操作:
$act = Invoke-Expression -Command "manage-bde -status C:" |
select-string -Pattern "(?<=(Percentage Encrypted:)).*" |
Select-Object -Property Matches -Last 1
$act.matches[0].value
MatchInfo对象可能会混淆。请尝试以下操作:
$act = Invoke-Expression -Command "manage-bde -status C:" |
select-string -Pattern "(?<=(Percentage Encrypted:)).*" |
Select-Object -Property Matches -Last 1
$act.matches[0].value
Powershell的设计原则之一是,大多数东西都可以作为对象(而不是其他管理脚本语言中的文本)处理。因为manage bde不是Powershell工具(而是普通的ol命令行工具)它不像为PS设计的工具那样容易使用PS。对于BitLocker,大约有十几个PS cmdlet。尤其是Get-BitLockerVolume
听起来几乎等同于manage-bde-status
但是,如果要坚持使用manage-bde,则可以使用out-string
cmdlet从对象生成字符串输出
$act = Invoke-Expression -Command "manage-bde -status C:" |
select-string -Pattern "(?<=(Percentage Encrypted:)).*" |
Select-Object -Property Matches -Last 1 |
out-string
$act| Out-Host
$act=调用表达式-命令“管理bde-状态C:”
选择字符串模式“(?Powershell的设计原则之一是,大多数东西都可以被视为对象(而不是其他管理脚本语言中的文本)。因为manage bde不是Powershell工具(而是一个普通的ol命令行工具)它不像为PS设计的工具那样容易使用PS。对于BitLocker,大约有十几个PS cmdlet。尤其是Get-BitLockerVolume
听起来几乎等同于manage-bde-status
但是,如果要坚持使用manage-bde,则可以使用out-string
cmdlet从对象生成字符串输出
$act = Invoke-Expression -Command "manage-bde -status C:" |
select-string -Pattern "(?<=(Percentage Encrypted:)).*" |
Select-Object -Property Matches -Last 1 |
out-string
$act| Out-Host
$act=调用表达式-命令“管理bde-状态C:”
选择string-Pattern“(?您可以使用以下命令将几乎任何内容设置为字符串:
[string](待解析代码)
例子
我可以通过ping
命令创建字符串数组:
$test=[string[](ping google.com)
这给了我一个结果:
# empty line
Pinging google.com [74.125.200.101] with 32 bytes of data:
Reply from 74.125.200.101: bytes=32 time=302ms TTL=36
Reply from 74.125.200.101: bytes=32 time=302ms TTL=36
Reply from 74.125.200.101: bytes=32 time=302ms TTL=36
Reply from 74.125.200.101: bytes=32 time=306ms TTL=36
Ping statistics for 74.125.200.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 302ms, Maximum = 306ms, Average = 303ms
当我执行$test.count
时,它返回11,这实际上是精确的行数,每个行在数组中都是一个字符串。通过使用以下命令,几乎可以将任何内容设置为字符串:
[string](待解析代码)
例子
我可以通过ping
命令创建字符串数组:
$test=[string[](ping google.com)
这给了我一个结果:
# empty line
Pinging google.com [74.125.200.101] with 32 bytes of data:
Reply from 74.125.200.101: bytes=32 time=302ms TTL=36
Reply from 74.125.200.101: bytes=32 time=302ms TTL=36
Reply from 74.125.200.101: bytes=32 time=302ms TTL=36
Reply from 74.125.200.101: bytes=32 time=306ms TTL=36
Ping statistics for 74.125.200.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 302ms, Maximum = 306ms, Average = 303ms
当我执行$test.count
时,它返回11,这实际上是精确的行数,每个行都是数组中的一个字符串。我的答案基于vasili syrakis的帖子。进入本页时,确切的问题是OP
$encryptionstatus = [string[]](manage-bde -status c:)
$encryptionstatus[9] | Out-Host
我的答案是基于vasili syrakis的帖子。进入本页,确切的问题是OP
$encryptionstatus = [string[]](manage-bde -status c:)
$encryptionstatus[9] | Out-Host
所有伟大的答案,谢谢你,mjolinor获得了答案积分,但所有奇妙的方法,我为遗漏字符串而感到愚蠢,所有伟大的解决方案。所有伟大的答案,谢谢你,mjolinor获得了答案积分,但所有奇妙的方法,我为遗漏字符串而感到愚蠢,所有伟大的解决方案。