非常感谢您花时间阅读本文。如果你能告诉我如何实现这一目标,我将不胜感激。
根据命令行输出的几个条件,构建一个PS脚本来撤销/释放几个许可证的想法
示例许可证状态可以通过下面的命令行获取
--------------------------------------------------------------------
Trust Flags = FULLY TRUSTED
Fulfillment Type: TRIAL
Status: ENABLED
Fulfillment ID: LOCAL_TRIAL_FID_586
Entitlement ID: SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PCR8
Product ID: NAME=Tableau Desktop TS;VERSION=4.0
Suite ID: NONE
Expiration date: 23-oct-2020
Feature line(s):
INCREMENT TableauDesktop tableau 2021.1108 permanent 1
VENDOR_STRING=EntitlementID=;EDITION=Professional;CAP=REG:STANDARD,WARN:14,NOGRACE;DC_STD=default;DC_CAP=;TRIALVER=2019.1;FulfillmentID=;ActivationID=;OEMNAME=;GRACE=;MAP_STD=default;MAP_CAP=;OFFLINE=
ISSUER="Tableau Software" ISSUED=9-nov-2018 START=8-nov-2018
TS_OK SIGN="042D 811B 5D78 81EA E6E7 28BD 607A F3D3 028E DC82
E310 A6BC C1D5 0913 5CBC 18B5 8671 7C7D C0B7 3C46 D1E7 A16C
6C84 3694 BB4C DB73 4B59 C419 D820 58E0"
--------------------------------------------------------------------
Trust Flags = FULLY TRUSTED
Fulfillment Type: TRIAL
Status: ENABLED
Fulfillment ID: LOCAL_TRIAL_FID_590
Entitlement ID: SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PTR2
Product ID: NAME=Tableau Desktop TS;VERSION=4.0
Suite ID: NONE
Expiration date: 23-oct-2020
Feature line(s):
INCREMENT TableauDesktop tableau 2021.1108 permanent 1
VENDOR_STRING=EntitlementID=;EDITION=Professional;CAP=REG:STANDARD,WARN:14,NOGRACE;DC_STD=default;DC_CAP=;TRIALVER=2019.1;FulfillmentID=;ActivationID=;OEMNAME=;GRACE=;MAP_STD=default;MAP_CAP=;OFFLINE=
ISSUER="Tableau Software" ISSUED=9-nov-2018 START=8-nov-2018
TS_OK SIGN="042D 811B 5D78 81EA E6E7 28BD 607A F3D3 028E DC82
E310 A6BC C1D5 0913 5CBC 18B5 8671 7C7D C0B7 3C46 D1E7 A16C
6C84 3694 BB4C DB73 4B59 C419 D820 58E0"
--------------------------------------------------------------------
我们需要将"Trust Flags"
、"status"
和"Entitlement ID"
从中的两个条目解析到哈希表中,以便执行逻辑运算。
你的指示会很有帮助!!再次衷心感谢
您可以使用带有-Regex
开关的switch
语句来执行基于正则表达式的逐行处理:
# Initialize the (ordered) output hash table.
$hashTable = [ordered] @{}
# Process the input file line by line and populate the hash table.
switch -file input.txt -regex {
'^(Trust Flags|status|Entitlement ID):? +(?:= +)?(.*)' {
$hashTable[$Matches.1] = $Matches.2
}
}
# Output the resulting hash tabe.
$hashTable
以上收益率:
Name Value
---- -----
Trust Flags FULLY TRUSTED
Status ENABLED
Entitlement ID SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PTR2
我首先要检查命令实用程序是否为您提供了控制输出的方法。许多命令行实用程序确实提供了用于创建结构化输出(如csv或xml(的选项。如果您确实仅限于文本,那么这是使用ConvertFrom-String
的完美场景
现在,根据数据的变化程度,您可能需要调整";样品";模板中使用的数据。我发现关键是提供足够的训练数据,而不是太多。请参阅下面的示例。
首先创建一个模板。我不确定你可能面临的其他可能的价值观,但我确实改变了模板中的第二个例子,只是为了提供一个更宽的网络。您可以将这些值调整为实际可能的值,以获得更好的结果。
$template = @'
Trust Flags = {TrustFlags*:FULLY TRUSTED}
Fulfillment Type: TRIAL
Status: {Status:ENABLED}
Fulfillment ID: LOCAL_TRIAL_FID_586
Entitlement ID: {EntitlementID:SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PCR8}
Trust Flags = {TrustFlags*:not trusted}
Fulfillment Type: TRIAL
Status: {Status:Disabled}
Fulfillment ID: LOCAL_TRIAL_FID_590
Entitlement ID: {EntitlementID:AB_12345678ABCDEF}
'@
现在将模板应用于文本
$text = @'
--------------------------------------------------------------------
Trust Flags = FULLY TRUSTED
Fulfillment Type: TRIAL
Status: ENABLED
Fulfillment ID: LOCAL_TRIAL_FID_586
Entitlement ID: SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PCR8
Product ID: NAME=Tableau Desktop TS;VERSION=4.0
Suite ID: NONE
Expiration date: 23-oct-2020
Feature line(s):
INCREMENT TableauDesktop tableau 2021.1108 permanent 1
VENDOR_STRING=EntitlementID=;EDITION=Professional;CAP=REG:STANDARD,WARN:14,NOGRACE;DC_STD=default;DC_CAP=;TRIALVER=2019.1;FulfillmentID=;ActivationID=;OEMNAME=;GRACE=;MAP_STD=default;MAP_CAP=;OFFLINE=
ISSUER="Tableau Software" ISSUED=9-nov-2018 START=8-nov-2018
TS_OK SIGN="042D 811B 5D78 81EA E6E7 28BD 607A F3D3 028E DC82
E310 A6BC C1D5 0913 5CBC 18B5 8671 7C7D C0B7 3C46 D1E7 A16C
6C84 3694 BB4C DB73 4B59 C419 D820 58E0"
--------------------------------------------------------------------
Trust Flags = FULLY TRUSTED
Fulfillment Type: TRIAL
Status: ENABLED
Fulfillment ID: LOCAL_TRIAL_FID_590
Entitlement ID: SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PTR2
Product ID: NAME=Tableau Desktop TS;VERSION=4.0
Suite ID: NONE
Expiration date: 23-oct-2020
Feature line(s):
INCREMENT TableauDesktop tableau 2021.1108 permanent 1
VENDOR_STRING=EntitlementID=;EDITION=Professional;CAP=REG:STANDARD,WARN:14,NOGRACE;DC_STD=default;DC_CAP=;TRIALVER=2019.1;FulfillmentID=;ActivationID=;OEMNAME=;GRACE=;MAP_STD=default;MAP_CAP=;OFFLINE=
ISSUER="Tableau Software" ISSUED=9-nov-2018 START=8-nov-2018
TS_OK SIGN="042D 811B 5D78 81EA E6E7 28BD 607A F3D3 028E DC82
E310 A6BC C1D5 0913 5CBC 18B5 8671 7C7D C0B7 3C46 D1E7 A16C
6C84 3694 BB4C DB73 4B59 C419 D820 58E0"
--------------------------------------------------------------------
'@
$text | ConvertFrom-String -TemplateContent $template -OutVariable results
TrustFlags Status EntitlementID
---------- ------ -------------
FULLY TRUSTED ENABLED SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PCR8
FULLY TRUSTED ENABLED SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PTR2
在演示中,我使用了Out-Variable
,这样我们就可以看到输出以及对变量的捕获。这显然可以改为仅$variable =
。$results
变量是一个PSCustomObject
,您可以像使用其他变量一样使用它。
$results | where trustflags -eq 'Fully Trusted'
TrustFlags Status EntitlementID
---------- ------ -------------
FULLY TRUSTED ENABLED SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PCR8
FULLY TRUSTED ENABLED SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PTR2
$results.entitlementid
SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PCR8
SC_LVJ1BYNH8ZF6H57OSCBZTFWPVR7PTR2
要对文件使用它,最好使用Get-Content -Raw
,具体取决于这些文件的大小。
Get-Content $textfile -Raw | ConvertFrom-String -TemplateContent $template -OutVariable results