2016-06-11 6 views
0

私は自分の会社で使用するためのpowershellスクリプトを作成しました。何らかの理由で、指定された場所のすべての.ostファイルを削除するはずのスクリプトの部分は、何度か動作します。 ostのパスは変更されません。誰でも何か考えがあるのはなぜですか?わかりやすいpowershellの問題に関する支援が必要

Stop-process -Name OUTLOOK -ErrorAction SilentlyContinue -Force 
Stop-process -Name communicator -ErrorAction SilentlyContinue -Force 
Stop-process -Name lync -ErrorAction SilentlyContinue -Force 
Stop-Process -Name UcMapi -ErrorAction SilentlyContinue -Force 
Stop-Process -Name skypehost -ErrorAction SilentlyContinue -Force 
Stop-Process -Name searchprotocalhost -ErrorAction SilentlyContinue -Force 

$OstPath = "c:\users\$([environment]::username)"+ "\AppData" + "\local" + "\Microsoft" + "\Outlook" 
$ost = get-ChildItem $OstPath | where { $_.Extension -eq ".ost"} 
$ost | remove-Item -WhatIf 

Start-Process Outlook 
+2

'searchprotocolhost'のスペルミスがありますか? '-WhatIf'を使うので、何も削除されていないということですか?あなたのコンピュータの中には、ユーザファイルを 'c:\ users'に保存していないものがあります。彼らは英語でローカライズされていませんか?別のプログラムがそれを使用している可能性があります。 Mitelの電話システムPIMはそうです。 – TessellatingHeckler

+0

が修正されましたが、それでも問題が発生しています。 – Funkel

+0

これは今解決されました。私は-whatifを削除して-forceを追加し、毎回それをクリアします。私はこの前にこれを試していないと悪いです。助けてくれてありがとう! – Funkel

答えて

2

コードを以下のように変更したいと考えています。テスト環境で以下のテストを行いました。問題なく動作しました。

$OSTPath = Get-Item -Path "$env:USERPROFILE\AppData\Local\Microsoft\Outlook\*" -Filter '*.ost' 

If ($OSTPath) 

    { 
     Write-Output "OST File Found, Deleting File...." 
      Remove-Item -Path $OSTPath -Force 
    } 

ELSE 

    { 
     Write-Output "No OST Exists. No Action Taken." 
    } 

解決策が投稿されていないので、私はこの質問に遭遇する可能性のある誰かのための解決策を追加すると考えました。

+0

これは、より読みやすいパスを取得するためのより良い方法です。 – user4317867

関連する問題