2012-05-11 16 views
1

私は比較的新しいスクリプトを作成しています。私は一日以上前に一時ファイルを消去するために使用しているスクリプトですが、アクティブな(ログインしている)ユーザーの一時ファイルを削除せず、スキップされたオブジェクトを通知しません。powershell:一時ファイルを削除する前にログインしているユーザーを確認してください。

#> 
$oldTime = [int]1 # 1 day 
# Create array containing all user profile folders 
$colProfiles = Get-ChildItem "C:\Documents and Settings\" -Name 
# Remove the "All Users" profile from the array 
$colProfiles = $colProfiles -ne "All Users" 

# Removes temporary files from each user profile folder 
ForEach ($objProfile in $colProfiles) { 
    # Remove all files and folders in user's Temp folder 
    Get-ChildItem "C:\Documents and Settings\$objProfile\Local Settings\Temp\*" -recurse | WHERE {($_.CreationTime -le $(Get-Date).AddDays(-$oldTime))} | remove-item -force -recurse 
    # Remove all files and folders in user's Temporary Internet Files. The -force switch on Get-ChildItem gets hidden directories as well. 
    Get-ChildItem "C:\Documents and Settings\$objProfile\Local Settings\Temporary Internet Files\*" -recurse -force | WHERE {($_.CreationTime -le $(Get-Date).AddDays(-$oldTime))} | remove-item -force -recurse 
+0

http://learn-powershell.net/2010/11/01/quick-hit-find現在のログオンユーザー/可能性があります – jimw

答えて

0

ファイルを削除する前に、ユーザー名をテストすることができます。

if ($objProfile -neq (gwmi Win32_ComputerSystem).username.split('\')[1])) 
{ .. can delete ..} 

または

if ($objProfile -neq [environment]::UserName) 
    { .. can delete ..} 
+0

ありがとうクリスチャン私はそれを試してみましょう。 – Will

関連する問題