PowerShell Parametre Takma Adlarını Alın
Bunun bir yolu Get-Help'i kullanmaktır.
PS C:\> get-help get-process -Parameter * | where {$_.aliases} | select name,aliases
name aliases
---- -------
ComputerName Cn
FileVersionInfo FV,FVI
Id PID
Name ProcessNameAncak Get-Help'i kullanmanız gerekiyor. Yardım işlevini kullanırsanız çalışmaz. Komutta takma adı olmayan parametreleri filtreledim. Ayrıca Get-Command'ı Get-Help'e yönlendirebilirsiniz.
PS C:\> get-command get-process | get-help -Parameter * | where {$_.aliases} | select name,aliases
name aliases
---- -------
ComputerName Cn
FileVersionInfo FV,FVI
Id PID
Name ProcessNameAncak bazı nedenlerden dolayı bu her zaman işe yaramıyor. Get-Service için takma adlar var, ancak aynı komutlar onu göstermede başarısız oluyor.
PS C:\> get-help get-service -Parameter * | where {$_.aliases} | select name,aliases
PS C:\> get-command get-service | get-help -Parameter * | where {$_.aliases} | select name,aliasesTakma adlar olduğunu biliyorum çünkü Get-Command bana gösteriyor, ancak bu bilgiyi çıkarmak biraz çalışma gerektiriyor.
PS C:\> (get-command get-service).parameters.getenumerator() | foreach {$_.value} | Select Name,Alia
ses
Name Aliases
---- -------
Name {ServiceName}
ComputerName {Cn}
DependentServices {DS}
RequiredServices {SDO, ServicesDependedOn}
DisplayName {}
Include {}
Exclude {}
InputObject {}
ErrorAction {ea}
WarningAction {wa}
Verbose {vb}
Debug {db}
ErrorVariable {ev}
WarningVariable {wv}
OutVariable {ov}
OutBuffer {ob}
PipelineVariable {pv}
Ayrıca istemde doğrulayabilirim:
PS C:\> get-service wuauserv -cn $hvr2 -sdo
Status Name DisplayName
------ ---- -----------
Running rpcss Remote Procedure Call (RPC)Görünüşe göre bilgileri her zaman Get-Command'dan alabiliyorum, Get-ParameterAlias adında bir fonksiyon yazdım.
#requires -version 3.0
Function Get-ParameterAlias {
<#
.SYNOPSIS
List command parameter aliases
.DESCRIPTION
This command will display all of the parameter aliases for a given command or
alias. It isn't always easy to discover parameter aliases. Many are not
documented on cmdlet help. But they can be discovered by digging into the
output from Get-Command.
Specify a command or alias or pipe results from Get-Command to this command.
By default, common parameters such as ErrorAction, or omitted unless you
use -IncludeCommon
.EXAMPLE
PS C:\> get-parameteralias invoke-command
Command Name Aliases
------- ---- -------
Invoke-Command ComputerName {Cn}
Invoke-Command ConnectionUri {URI, CU}
Invoke-Command InDisconnectedSession {Disconnected}
Invoke-Command HideComputerName {HCN}
Invoke-Command ScriptBlock {Command}
Invoke-Command FilePath {PSPath}
Invoke-Command ArgumentList {Args}
.EXAMPLE
PS C:\> get-command dir | Get-ParameterAlias
Command Name Aliases
------- ---- -------
Invoke-Command ComputerName {Cn}
Invoke-Command ConnectionUri {URI, CU}
Invoke-Command InDisconnectedSession {Disconnected}
Invoke-Command HideComputerName {HCN}
Invoke-Command ScriptBlock {Command}
Invoke-Command FilePath {PSPath}
Invoke-Command ArgumentList {Args}
.NOTES
Last Updated: 2/11/2014
Version : 0.9
Learn more:
PowerShell in Depth: An Administrator's Guide (http://www.manning.com/jones2/)
PowerShell Deep Dives (http://manning.com/hicks/)
Learn PowerShell 3 in a Month of Lunches (http://manning.com/jones3/)
Learn PowerShell Toolmaking in a Month of Lunches (http://manning.com/jones4/)
****************************************************************
* DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED *
* THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK. IF *
* YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, *
* DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING. *
****************************************************************
.LINK
Get-Command
.LINK
https://jdhitsolutions.com/blog/2014/02/get-powershell-parameter-aliases
.INPUTS
[String] or [System.Management.Automation.CmdletInfo] or [System.Management.Automation.AliasInfo]
.OUTPUTS
[System.Management.Automation.ParameterMetadata]
#>
[cmdletbinding()]
Param(
[Parameter(Position=0,Mandatory=$True,
HelpMessage="Enter a command or cmdlet name",
ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
[ValidateNotNullorEmpty()]
[Alias("command")]
[object]$Name,
[Switch]$IncludeCommon
)
Begin {
Write-Verbose "Starting $($MyInvocation.mycommand)"
if ($IncludeCommon) {
$common=$Null
}
else {
#define common parameter names. PipelineVariable was added in v4.
$common= "Verbose","Debug","ErrorAction","WarningAction",
"ErrorVariable","WarningVariable","OutVariable","OutBuffer",
"Whatif","Confirm","PipelineVariable"
}
} #begin
Process {
Try {
#test if piped in object is already a command info object
if ($Name -is [System.Management.Automation.CmdletInfo]) {
Write-Verbose "Processing a command"
$parameters = $name.Parameters
$commandname= $name.Name
}
elseif ($Name -is [System.Management.Automation.AliasInfo]) {
Write-Verbose "Processing an alias"
$parameters = $name.Parameters
$commandname= $name.ResolvedCommand
}
else {
#must be a string so get the command
Write-Verbose "Getting command information for $Name"
$command = Get-Command $Name -ErrorAction "Stop"
$commandname= $command.Name
$parameters = $command.parameters
}
} #try
Catch
{
Write-Warning "Failed to find command $Name. $($_.Exception.message)"
#bail out
Return
}
Write-Verbose "Analyzing $CommandName"
if ($parameters) {
$parameters.GetEnumerator() | where {$_.key -notin $common} |
foreach {
#get parameters with aliases
$_.value | where {$_.Aliases} |
Select @{Name="Command";Expression={$CommandName}},Name,Aliases
}
} #if parameters found
} #process
End {
Write-Verbose "Ending $($MyInvocation.mycommand)"
} #end
} #end function
#set an optional alias
Set-Alias -Name gpa -value Get-ParameterAliasİşlev bir komut adı alabilir veya Get-Command'dan bir şeyler aktarabilirsiniz.
PS C:\> Get-ParameterAlias get-wmiobject
Command Name Aliases
------- ---- -------
Get-WmiObject Class {ClassName}
Get-WmiObject ComputerName {Cn}
Get-WmiObject Namespace {NS}
PS C:\> get-command get-service | get-parameteralias
Command Name Aliases
------- ---- -------
Get-Service Name {ServiceName}
Get-Service ComputerName {Cn}
Get-Service DependentServices {DS}
Get-Service RequiredServices {SDO, ServicesDependedOn}Get-Command'daki parametre bilgileri -ErrorAction gibi genel parametreleri içerdiğinden, -IncludeCommon parametresini kullanmadığınız sürece varsayılan olarak bunları atladım.
Artık örneğin bir modül için parametre takma adlarını keşfetmek kolaydır.
get-command -module hyper-v | get-parameteralias | out-gridview -title "Hyper-V Aliases"Parametre takma adlarını bilmek konsolda daha verimli olmanızı sağlayabilir. Ancak unutmayın, PowerShell'i bir betiğe işlerken bu takma adlardan bazıları biraz şifreli olabileceğinden tam parametre adını kullanın.
Her zaman olduğu gibi, umarım bana ne düşündüğünüzü söylersiniz.

