0

ここにこのコードスニペットがあります:

    $currentDate = get-date
    $pastDate = $currentDate.addhours(-5)


    $errorCommand = get-eventlog -Before $currentDate -After $pastDate -logname   Application -source "ESENT" 
    $errorInfo = $errorCommand | out-string

スクリプト全体を実行するローカル マシンがあり、100% 正常に動作します。このコードを Windows Server 標準でリモート デスクトップ経由で実行すると、次のようになります。

「Get-EventLog : パラメーター名 'before' に一致するパラメーターが見つかりません」それは「$errorCommand =" を参照しており、このパラメーターが見つからない理由を一生理解できません。私のパワーシェルで何かが正しく設定されていません。 ?

4

1 に答える 1

0

ビルトインGet-EventLogが同じ名前の別の関数によってオーバーライドされたようです。標準パラメーターの多くが欠落しているだけでなく、コマンドは次のようにGet-Command Get-EventLog言及していませんでした。Microsoft.Powershell.Management

PS > Get-Command Get-EventLog

CommandType     Name             ModuleName                              
-----------     ----             ----------                              
Cmdlet          Get-EventLog     Microsoft.PowerShell.Management         


PS > 

を使用New-Aliasして、名前を元のコマンドレットに戻すことができます。

$currentDate = get-date
$pastDate = $currentDate.addhours(-5)

#####################################################################
New-Alias Get-EventLog Microsoft.PowerShell.Management\Get-EventLog
#####################################################################

$errorCommand = get-eventlog -Before $currentDate -After $pastDate -logname   Application -source "ESENT" 
$errorInfo = $errorCommand | out-stringApplication -source "ESENT" 

以下のデモンストレーションを参照してください。

PS > function Get-EventLog { 'Different' }  
PS > Get-EventLog  # This is a new function, not the original cmdlet
Different

PS > New-Alias Get-EventLog Microsoft.PowerShell.Management\Get-EventLog  
PS > Get-EventLog  # This is the original cmdlet
cmdlet Get-EventLog at command pipeline position 1
Supply values for the following parameters:
LogName: 

最初にコマンドレットがオーバーライドされた理由を調査し、代わりにそれを修正することをお勧めします。

于 2014-06-25T19:01:15.637 に答える