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