我有一个 PowerShell 函数
Download-File
,它使用 WebClient.DownloadFile
——因此得名。
当我尝试将
.ps1
脚本转换为 .psm1
模块时,PowerShell 警告我“下载”不在 推荐动词列表中。
有什么好的选择吗?
Get-
似乎是为了获取属性,而不是内容(除了 Get-Content
之外,奇怪的是)。 Receive-
对于我的喜好来说似乎有点太被动了(即脚本会阻塞,直到信息被发送)——这不太适合。
想法?
对我来说,“Get”是最自然的动词。它获得一切,而不仅仅是属性。对于名词,我会使用“WebFile”之类的东西,您可以轻松猜测您得到的内容以及它来自哪里。
这行不通:
Start-Download -Url http://blah/
或者根据同步操作的建议使用
Invoke-Download
。 Start
用于异步。
New-Download
或New-WebDownload
或New-DownloadFile
呢??
也许
Request-TeamCityArtifacts
?
下载没有同义词。
Copy
是我发现的最接近的,被记录为未经批准的 Clone
的同义词。
我想我在这里找到了更好的答案。我知道这是一个旧线程,但如果您要下载的文件将存储在磁盘上,我不同意使用
Get
动词。我认为 Get
应该保留用于真正的只读操作。可以从互联网上Get
一个文件并将其存储到内存中,以便稍后可以使用它做一些事情,但是当您将该文件写入磁盘时,它就不再是只读操作了。
我认为
Save
可能是 Download
的最佳通用替代品。
这可能会产生类似的结果:
Save-WebFile -Uri $Uri
按照
Invoke-WebRequest
的模式,我会使用Invoke-ArtifactsDownload
。保持名称紧凑并允许上下文的some 来自模块名称是可以的。
例如,我目前正在开发 SharePoint 集成,并提出这个问题,因为我想命名一个用于下载列表项附件的函数。当
Get-PnPListItemAttachment
没有检索文件名但实际上将文件下载到磁盘时,我感到很困惑,所以 Get
不符合我的期望,正如OP所说。然而,如果不知道库名称,PnP
的含义并不明显,并且在使用模块时这种歧义是相当常见的。