看起來內置的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
設置名稱回到原來的cmdlet:
$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:
儘管最好調查爲什麼該cmdlet首先被覆蓋,然後修復該問題。
「Get-EventLog」cmdlet是否有可能被重新定義?有人可以用自己的函數覆蓋內置的cmdlet。 – iCodez
@iCodez是的,它可能是這種情況。當我得到Get-EventLog的幫助時,在params之前或之後都沒有提到,實際上相當多的東西似乎沒有被提及。我認爲我將不得不尋找其他方式來達到與我的腳本相同的效果,但以一種不同的方式......編輯:也許某種混合涉及-newest可以解決我的問題。 – Blargenspiel
執行'Get-Command Get-EventLog'並查看ModuleName是否爲Microsoft.PowerShell.Management,或者是否列出了多個。 – TheMadTechnician