No Powershell parece que a lista de parâmetros para uma função é um construtor de array, mas às vezes () é permitido e às vezes não, por exemplo ao chamar a função sobrecarregada getHashCode(). Alguém pode explicar o que está acontecendo com isso?
Aqui está uma função simples e os resultados curiosos:
function onBattery {
>> if ((Get-WmiObject -Class Win32_Battery | Select-Object -ExpandProperty batterystatus) -eq 2) {
>> write-output "Plugged In"
>> }
>> else {
>> write-output "On Battery"
>> }
>> }
PS C:\tmp>
PS C:\tmp> (onBattery).getHashCode
OverloadDefinitions
-------------------
int GetHashCode()
PS C:\tmp> (onBattery).getHashCode()
62670595
PS C:\tmp> onBattery($null)
Plugged In
PS C:\tmp> onBattery ($null)($null)
Plugged In
PS C:\tmp> onBattery()
At line:1 char:11
+ onBattery()
+ ~
An expression was expected after '('.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression
Além disso, por curiosidade, o que seria necessário para fazer com que uma função PS pudesse ser chamada por meio de um conjunto vazio de parênteses como este: onBattery()?