0
請原諒我這一個。任何想法如何解決這個PowerShell錯誤?
我對電源外殼非常陌生。
昨天我在這裏發佈了一個問題,要求任何幫助以編程方式閱讀iis日誌的內容。
對此尚無迴應。
所以,經過艱苦的搜索後,我發現一個Power Shell腳本,出現接近我在找什麼。
當我試圖執行它,我得到了以下錯誤:
Get-ChildItem : Cannot find path '\\servername\c$\windows\system32\logfiles\
W3SVC1' because it does not exist.
我就有理由相信,這更是一個權限問題,因爲存在的路徑。
有誰知道如何將用戶名和密碼添加到下面的腳本?
非常感謝。
#
# Script constants
#
$Server = 'myServer'
$Days = 1
Function Read-IISLog {
[CmdLetBinding()]
Param(
[Parameter(ValueFromPipelineByPropertyName = $True)]
[ValidateScript({ $_ | %{ Test-Path $_ } })]
[Alias("FullName")]
[String[]]$Path
)
Process {
$Path | ForEach-Object {
$FullPath = (Get-Item $_).FullName
$FileStream = New-Object IO.FileStream($FullPath, "Open", "Read", "ReadWrite")
$StreamReader = New-Object IO.StreamReader($FileStream)
For ($i = 0; $i -lt 4; $i++) {
$Line = $StreamReader.ReadLine()
If ($Line -Match '#Fields: ') {
$Header = ($Line -Replace '#Fields: ').Split(' ', [StringSplitOptions]::RemoveEmptyEntries)
}
}
Do {
$Line = $StreamReader.ReadLine()
If ($Line -NotLike "#*") {
$Line | ConvertFrom-Csv -Delimiter ' ' -Header $Header
}
} Until ($StreamReader.EndOfStream)
}
}
}
$Output = @{}
$Server | ForEach-Object {
Get-ChildItem "\\$_\c$\windows\system32\logfiles\W3SVC1" -Filter *.log |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-$Days) } |
Read-IISLog |
Where-Object { $_."cs-uri-stem" -Match 'ActiveSync' }
} | Select-Object `
@{n='FirstSync';e={ [DateTime]::ParseExact("$($_.date) $($_.time)", "yyyy-MM-dd HH:mm:ss", $Null) }},
@{n='LastSync';e={ [DateTime]::ParseExact("$($_.date) $($_.time)", "yyyy-MM-dd HH:mm:ss", $Null) }},
@{n='ClientIP';e={ [Net.IPAddress]($_."c-ip") }},
@{n='ClientDevice';e={ $_."cs(User-Agent)" }},
@{n='AuthenticatedUser';e={ $_."cs-username" }},
@{n='Mailbox';e={ $_."cs-uri-stem".Split("/")[2] }},
@{n='DeviceId';e={ $_."cs-uri-stem".Split("/")[-1] }},
@{n='DeviceType';e={ $_."cs-uri-stem".Split("/")[-2] }},
@{n='SyncCount';e={ 1 }} |
ForEach-Object {
If (!$Output.Contains($_.DeviceId)) {
$Output.Add($_.DeviceId, $_)
} Else {
If ($_.FirstSync -lt $Output[$_.DeviceId].FirstSync) { $Output[$_.DeviceId].FirstSync = $_.FirstSync }
If ($_.LastSync -gt $Output[$_.DeviceId].LastSync) { $Output[$_.DeviceId].LastSync = $_.LastSync }
$Output[$_.DeviceId].SyncCount += 1
}
}
$Output.Values
這是一個絕望的嘗試來解決這個問題,因爲用戶期待明天的演示。
嘗試運行腳本誰有權訪問給定的路徑不同的用戶。看看這個:http://stackoverflow.com/questions/17569678/run-powershell-script-using-different-credentials – Harsh
訪問'\ c $'共享需要本地管理員組在本機上的成員資格 –
如果當前提供者不是'FileSystem',那麼您必須使用提供者名稱來限定路徑:'FileSystem :: \\ $ _ \ c $ \ windows \ system32 \ logfiles \ W3SVC1'。 – PetSerAl