PowerShell中是否有一个函数用于转义路径中的字符?
注意:我知道提供Path
参数的大多数cmdlet 也提供了LiteralPath
解决此问题的参数.这个问题更多来自好奇心而不是需要,就像我能想到的大多数用例一样,切换到LiteralPath
有意义.但是有一些真正的用例(例如Start-BitsTransfer
有一个Source
参数,但没有文字等价物).
如果我有一个文件c:\temp\test[0123].txt
,而不是Get-Item 'c:\temp\test[0123].txt'
,我必须Get-Item 'c:\temp\test`[0123`].txt'
用来获得结果(或使用LiteralPath
参数).
甚至另一个PowerShell命令返回的路径也会返回一个未转义的字符串; 即Get-ChildItem 'c:\temp\' -Filter 'test*.txt' | Convert-Path | Get-Item
失败(注意:如果我们传递实际FileSystemInfo
对象全部工作,但该对象没有正确转义字符串路径的属性).
我们可以使用下面的代码轻松逃避:
$path = 'c:\temp\test[0123].txt'
$path = $path -replace '([][[])', '`$1' # escape square brackets by adding back ticks
Get-Item $path
Run Code Online (Sandbox Code Playgroud)
但是,当转义字符串时,标准建议是避免滚动自己的解决方案/使用语言解决这些问题的方法.
PowerShell中是否存在用于此目的的任何预先存在的功能,或任何推荐的接近此功能的方法; 或者是使用定制功能的唯一选择(例如下面)?
function ConvertFrom-LiteralPath {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
[string]$LiteralPath
)
process {
(New-Object -TypeName 'PSObject' …
Run Code Online (Sandbox Code Playgroud) 我在谷歌发现了一些关于此的页面,但它们要么不完整,要么过时.某处有明确的指导吗?谢谢
我有项目我想升级到.Net4,它使用BackgroundCopyManager.dll.
谁知道我在哪里可以下载它的.Net4版本?
谢谢
你可以在这里看到BackgroundCopyManager.dll清单:
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly BackgroundCopyManager
{
.custom instance void [mscorlib]System.Runtime.InteropServices.TypeLibVersionAttribute::.ctor(int32,
int32) = ( 01 00 01 00 00 00 00 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.InteropServices.GuidAttribute::.ctor(string) = ( 01 00 24 31 64 65 65 62 37 34 66 2D 37 39 31 35 // ..$1deeb74f-7915
2D 34 35 36 30 …
Run Code Online (Sandbox Code Playgroud) 我是 PowerShell 脚本的新手。我正在努力使用 MS 文档并找到几个可以使用的示例。
我正在尝试使用 BitsTransfer 脚本自动从 ntis.gov 每周下载一个大型 txt 文件。我正在使用 .ps1 脚本,因为显然 SSIS 在不编写 .NET 代码的情况下无法做到这一点。
访问此文本文件是通过 https: 使用 NTIS 颁发的用户名和密码。如何将密码指定(硬编码)到身份验证字符串中?我知道这是不好的做法。有一个更好的方法吗?
我的脚本看起来像这样-
$date= Get-Date -format yyMMdd
Import-Module BitsTransfer
$Job = Start-BitsTransfer `
-DisplayName DMFweeklytrans `
-ProxyUsage AutoDetect `
-Source https://dmf.ntis.gov/dmldata/weekly/WA$date `
-Destination D:\Test.txt `
-Authentication Basic `
-Credential "myIssuedUsername" `
-Asynchronous
While (($Job.JobState -eq "Transferring") -or ($Job.JobState -eq "Connecting")) {sleep 5}
Switch($Job.JobState)
{
"Transfer Completed" {Complete-BitsTransfer -BitsJobs $Jobs}
default {$Job | Format-List}
}
Run Code Online (Sandbox Code Playgroud) 因为Bitsadmin已被弃用,我想听听您是否知道从批处理脚本中下载文件的替代方法.最好的是已经附带Windows的替代品,所以我不需要下载额外的东西.
bits-service ×2
powershell ×2
.net-4.0 ×1
batch-file ×1
c# ×1
dll ×1
escaping ×1
https ×1
passwords ×1
path ×1