Pensei nisso enquanto respondia a essa pergunta .
Como você pode evitar a necessidade de qualificar totalmente todos os tipos em um espaço para nome?
É muito, muito entediante escrever em System.Security.Cryptography.X509Certificates.X509Store
vez de X509Store
, ou em [System.Security.Cryptography.X509Certificates.StoreName]::My
vez de [StoreName]::My
.
Em C # você tem using
diretrizes ... e o Powershell?
EDIT 1 - Isso funciona para tipos:
$ns = "System.Security.Cryptography.X509Certificates"
$store = New-Object "$ns.X509Store"(StoreName,StoreLocation)
New-Object aceita uma string literal como a definição de tipo, para que possa ser criada programaticamente.
EDIT 2 - Isso funciona para membros de enumeração usados como parâmetros:
$store = New-Object "$ns.X509Store"("My","LocalMachine")
Onde "Meu" é [System.Security.Cryptography.X509Certificates.StoreName]::My
e "LocalMachine" é [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine
.
Nomes literais são convertidos automaticamente em membros de enumeração, se colocados onde um membro de enumeração é esperado.