2015-07-31 1 views
1

Я выполняю много операций System.IO.Path, и мне было любопытно, можно ли хранить ссылку на этот статический класс в переменной, чтобы она была короче?Можно ли использовать переменную для ссылки на статический класс .NET в powershell?

Вместо того чтобы писать эти длинные наматывается пути 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?

ответ

5

Да. Ваш Рекомендованный код находится рядом, нужно просто использовать синтаксис :: статического вызова:

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

nice, не знал это! –

+0

Ahh awesome. Я пробовал это, но ISE не давала мне никакой интеллигентности, поэтому я просто предположил, что это неверно. Благодаря! – Thraka

1

PowerShell имеет встроенные командлеты для некоторых операций пути:

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:

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

Я все еще заинтересован, если вы можете или не можете сделать это, но я настроил мой пример, чтобы тянуть имя файла также. Возможно, вы настроите свой пример? – Thraka

+0

Я отредактировал свой ответ. Split-Path с параметром -Leaf дает вам имя файла –

Смежные вопросы