是否可以使用变量来引用PowerShell中的.NET静态类?

时间:2015-07-31 21:08:48

标签: powershell

我正在做很多System.IO.Path操作,我很好奇是否可以在变量中存储对该静态类的引用,因此它更短?

而不是编写这些冗长的namespace.class路径:

[System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($targetFile), [System.IO.Path]::GetFileName("newfile_$targetFile"))

写这个会很棒:

$path = [System.IO.Path]
$path.Combine($path.GetDirectoryName($targetFile), $path.GetFileName("newfile_$targetFile"))

有没有办法在powershell中执行此操作?

2 个答案:

答案 0 :(得分:5)

是。您建议的代码很接近,您只需要使用::静态调用语法:

$path = [System.IO.Path]
$path::Combine( ... )

答案 1 :(得分:1)

PowerShell具有用于某些路径操作的内置cmdlet:

PS C:\Windows\system32> get-command -Noun Path
CommandType Name         ModuleName                     
----------- ----         ----------                     
Cmdlet      Convert-Path Microsoft.Powershell.Management
Cmdlet      Join-Path    Microsoft.Powershell.Management
Cmdlet      Resolve-Path Microsoft.Powershell.Management
Cmdlet      Split-Path   Microsoft.Powershell.Management
Cmdlet      Test-Path    Microsoft.Powershell.Management  

使用本机PowerShell cmdlet实现的示例:

Join-Path (Split-Path $targetFile) (Split-Path $targetFile -Leaf)