Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell动词表示“;“到期”;_Powershell_Powershell 4.0 - Fatal编程技术网

PowerShell动词表示“;“到期”;

PowerShell动词表示“;“到期”;,powershell,powershell-4.0,Powershell,Powershell 4.0,我正在完成服务器应用程序的cmdlet集。应用程序的一部分包括安全主体管理和数据对象管理,以及两者的“过期”(定时和手动)。过期日期后,安全主体的登录和访问被拒绝,并且有选择地阻止对该主体拥有的数据的访问(立即删除或作为自动维护的一部分,将其标记为过期) 从Get-Verb的输出中,我看不到Expire的明显同义词,Expire是这里执行的操作最自然的动词选择。在安全主体上过期使主体过期,也可能使其存储的所有数据过期,而数据对象的过期仅限于该对象 Set-已用于这两种对象类型,并且功能部分重叠(

我正在完成服务器应用程序的cmdlet集。应用程序的一部分包括安全主体管理和数据对象管理,以及两者的“过期”(定时和手动)。过期日期后,安全主体的登录和访问被拒绝,并且有选择地阻止对该主体拥有的数据的访问(立即删除或作为自动维护的一部分,将其标记为过期)

从Get-Verb的输出中,我看不到Expire的明显同义词,Expire是这里执行的操作最自然的动词选择。在安全主体上过期使主体过期,也可能使其存储的所有数据过期,而数据对象的过期仅限于该对象

Set-已用于这两种对象类型,并且功能部分重叠(Expire-强制过去的日期并删除数据,而Set-将允许未来或过去的日期但不删除数据)

以这种方式,Expire将两个操作(Set+Remove)组合在一起,出于数据安全原因,我们不希望强制将两个操作分离(这已经是可能的)

由于这个原因,我也认为禁用是不合适的,因为它暗示了启用--/p>反向的可能性。 我还认为删除本身是不合适的,因为在操作过程中有数据记录被明确地而不是删除

至少对于数据而言,取消发布似乎非常接近,但再次表明,取消发布和发布似乎是成对的,在这种情况下,这是不可逆的。当应用于安全主体时,它也没有意义


那么,如果您想让某个东西过期,您希望使用哪一个(如果有的话)标准动词呢?

那么
Invoke
呢?它可以是
调用ExpireAppObject
或类似的东西

实际上,没有一个合适的动词符合您的情景,这是基于查看两个“向我跳”的列表:

拒绝(dn): 拒绝、对象、阻止或反对资源或进程的状态

Revoke(rk):指定不允许访问资源的操作。这个动词与Grant成对出现

如果没有成对操作,我不会太担心,因为有些内置cmdlet会出现这种情况<代码>停止计算机,例如,没有配对的
启动计算机
。有
删除变量
,但没有
添加变量
(有
新变量
)。我认为,只有当成对命令存在时,它的命名才是一致的,这一点才很重要


另一种选择可能是使用类似于
设置ObjectExpiration
/
获取ObjectExpiration
的东西,特别是如果想要查询对象何时将过期是有意义的话。

Hmm。我并不完全反对撤销,尤其是对于安全主体。但是,它并不完全准确,对于数据来说,它没有真正意义,因为它不是对数据的访问,而是数据对象本身被删除。好主意。@DavidRa也许你有两个完全不同的动词(例如,Revoke Principal和Remove Data),它们的参数指示效果是立即的还是延迟的。我认为Revoke Principal已经足够接近了(它已经需要一个SwitchParameter来决定是否也删除数据)。但是删除数据/拒绝数据感觉不正确。不过,在这一点上,我可能是在吹毛求疵。如果不是因为PSH愚蠢地坚持显示“未经批准”动词的警告消息,我根本不会问这个问题,因为cmdlet可以使用任意数量的GCM命令找到—GCM Product、GCM Datatype、GCM User都可以找到与产品相关的cmdlet,如果没有“愚蠢”的警告,我们就不会有一致的环境。不过,有一种简单的解决方法:正确命名cmdlet(使用已批准的动词),如果域需要不在列表中的动词,请使用别名。这两个方面你都能做到最好:知道域的人会找到命令(带别名),而common verb会让那些只使用PowerShell并且不想使用Delete-、Remove-、Vanish-…;)的人发现命令+1,因为在本例中,命令名中包含单词Expire。如果用户想到Expire,他们宁愿搜索命令
*Expire*
,而不是搜索一些在这种情况下不符合要求的已批准动词。不幸的是,我不得不经常使用
调用Xyz
ApprovedVerb-nown
的概念非常好,但认可的词汇非常差。