首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >间歇性投掷误差

间歇性投掷误差
EN

Stack Overflow用户
提问于 2015-09-10 13:39:26
回答 1查看 45关注 0票数 0

我遇到了一个奇怪的错误,有时在执行我的脚本时也会出现这种情况。错误是:

代码语言:javascript
复制
Method invocation failed because [System.Object[]] does not contain a method named 'op_Subtraction'.

我得到此错误的行是:

代码语言:javascript
复制
 $LineNr = $dbsnap_file | Select-String -Pattern $check | Select-Object -ExpandProperty LineNumber
 $del = $dbsnap_file[$LineNr-13] -split ':' | Select-Object -Last 1

$dbsnap_file是gc (some_file)。该文件内容如下:

代码语言:javascript
复制
AllocatedStorage     : 5
AvailabilityZone     : us-west-1a
DBInstanceIdentifier : test-multisite
DBSnapshotIdentifier : test-multisite-2015-09-03-04-15
Encrypted            : False
Engine               : mysql
EngineVersion        : 5.6.19a
InstanceCreateTime   : 12/19/2014 5:19:26 AM
Iops                 : 0
KmsKeyId             : 
LicenseModel         : general-public-license
MasterUsername       : root
OptionGroupName      : default:mysql-5-6
PercentProgress      : 100
Port                 : 3306
SnapshotCreateTime   : 9/2/2015 11:15:36 PM
SnapshotType         : automated

$check的值类似于测试-多站点-2015-09-03-04-15。所以,作为$del,我得到的是SnapshotCreateTime。

我是断断续续地收到这个错误,有时是工作,有时不是。有人能帮我解决一下什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-10 14:46:19

就像CB所说的那样,Select-String将返回所有的比赛。你只期待一个,而代码是围绕着这个假设构建的。您所得到的错误是相当明显的。

代码语言:javascript
复制
[System.Object[]] does not contain a method named 'op_Subtraction'

您试图从对象中减去13,而不是整数。正如在chat中讨论的那样,原来的问题是源文件有双倍的数据。

在这种情况下,解决方案是清理您的源。如果您对假设感到满意,也可以通过更新select来解决这个问题。

代码语言:javascript
复制
$LineNr = $dbsnap_file | Select-String -Pattern $check | Select-Object -First 1 -ExpandProperty LineNumber

这将确保只返回一个。请注意,你忽略了真实的数据。因此,验证$LineNr的来源和内容是我在这里推荐的解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32503516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档