PowerShell 脚本进阶:如何统计目录大小并包含隐藏文件 目录 引言 PowerShell 基础:Get-ChildItem 和文件统计 2.1 Get-ChildItem 基本用法 2.2...PowerShell 提供了强大的文件遍历和计算能力,但默认情况下,它不会处理隐藏文件或系统文件。本文将详细介绍如何使用 PowerShell 递归计算文件夹大小,并确保包含隐藏文件。 2....PowerShell 基础:Get-ChildItem 和文件统计 2.1 Get-ChildItem 基本用法 Get-ChildItem(别名 dir 或 ls)是 PowerShell 中用于列出文件和目录的核心命令...基本语法: Get-ChildItem -Path "C:\TargetFolder" -Path:指定目标路径(默认当前目录) -Directory:仅返回目录 -File:仅返回文件 -Recurse...默认情况下,Get-ChildItem 不会返回隐藏或系统文件。
[TOC] 0x01 目录和文件操作 Test-Path 命令 - 验证目标文件目录是否存在 描述:可以验证目录或者文件是否存在以及系统变量是否存在; 语法参数: Test-Path [-Path]...CD到目标键的路径下。...(但是需要注意SetValue()方法只对刚创建的键有效,因为添加新键时PowerShell会以写权限打开它。...Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty" # 示例5.指定内容的备用数据流如果流不存在则此cmdlet会创建它不支持通配符。...Test-Path:验证键是否存在 Cd, Set-Location: 更改当前(键)目录 Dir,ls, Get-ChildItem: 列出键的内容 Get-ItemProperty: 读取键的值 Set-ItemProperty
command :" get-childitem -recurse echo "Get-ChildItem env: " Get-ChildItem env: echo "get item with...**查看注册表的信息 Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall **寻找文件--按条件 echo "...get item with -include"//包含条件 get-childitem C:\* -include *.txt,*.log echo "get item with -exclude"/.../不包含条件 Get-ChildItem c:\* -exclude *.txt,*.log echo "get item by sort " **查看文件按文件大小排序: Get-ChildItem...Of course you can: " **测试路径的存在 Test-Path HKCU:\Software\Microsoft\Windows\CurrentVersion
刚才已经查看过了,计划任务程序是看不到了 1) schtasks 命令 schtasks /query /fo LIST /v | findstr "test1" 查询不到 如果我们知道该计划任务的路径和名称...删除计划任务 尝试通过 schtasks 进行删除,估计不太行,毕竟刚才查询都找不到 schtasks /Delete /TN "TaskName" /F 找不到计划任务 尝试通过注册表给隐藏的计划任务补一个...test5 的时候是找不到指定的文件 如果大家在测试的过程中没有注意细节,很可能与一些发现失之交臂 2. powershell Get-ScheduledTask | findstr "test4"...上面能够被排查出来,是因为存在无 SD 项的文件夹,如果攻击者再变态一点,直接把注册表中文件夹都删除了,会怎么样呢?...这种隐藏的弱点也就是计划任务文件夹没有 SD 项,重启计划任务服务计划任务继续执行,不耽误 不保留计划任务注册表项 删除注册表中的计划任务 删除注册表中的计划任务文件夹 直接将计划任务注册表搞坏 其实这几种都是一样的,因为计划任务服务会
# 列出常见临时/缓存路径的大小(GB) $targets = @( 'C:\Windows\Temp', 'C:\Windows\ServiceProfiles\LocalService\AppData...获取所有文件和目录,然后统计大小 $items = Get-ChildItem -Path $p -Force -Recurse -ErrorAction SilentlyContinue...ProgramData 下扫描名含 Temp 或 Cache 的目录前 30 个“大户” # 在 Measure-Object 处静默错误,否则会报错【Measure-Object : 在任何对象的输入中都找不到属性...“Length”】,报这个错是因为Length 是“文件”的属性,目录无此属性。...正因为权限限制,很多用户用资源管理器直观查看时觉得“看不到/删不动”,但 cleanmgr 以提升权限运行时能统计/清掉。
基础示例: # 0.New-Object可以创建一个对象,空对象什么都没有,如果调用它不会返回任何东西, 但可以在后续为他增加方法和属性。...Tips : 由于大多数 .NET Framework 核心类都包含在 System 命名空间中,所以如果 PS 找不到你指定的类型名称的匹配项,它将自动尝试查找你在 System 命名空间中指定的类,...Force 参数 : 强制执行比如覆盖已存在的成员(属性) 基础示例: # 1.创建一个PSObject对象并为其添加属性 PS > $obj=New-Object PSObject PS > Add-Member...Out-Host 直接写入 PowerShell 主机,但它不会为管道生成基于对象的输出。...Get-ChildItem -Path C:\Test | Sort-Object # 2.按文件长度对当前目录排序 PS> Get-ChildItem -Path C:\Test -File | Sort-Object
查看dism mount 残留的powershell如下 dism /Cleanup-Mountpoints dism /Cleanup-Wim # 定义注册表路径 $regPath = "HKLM...:\SOFTWARE\Microsoft\WIMMount\Mounted Images" # 使用Get-ChildItem递归遍历注册表项 Get-ChildItem -Path $regPath...$subKeys = Get-ItemProperty -Path $_.PSPath -Name * -ErrorAction SilentlyContinue # 检查是否存在名为
[TOC] 目录和文件打开 Test-Path 描述:可以验证目录或者文件是否存在以及系统变量是否存在; 基础实例: #1.验证文件夹目录是否存在 PS > test-path -Path C:\Windows...\ True #2.验证文件是否存在 PS C:\Users\WeiyiGeek> test-path ....\nono.py False #3.验证变量是否存在 test-path variable:PWD True Get-ChildItem 基础示例: #1.列举当前文件与目录(ls / gci /...dir) Get-ChildItem #2.过滤文件 > Get-ChildItem -Name 1.txt # 1.txt > Get-ChildItem -Filter *.txt # Mode...Attributes : Directory # 下一页; 下一行;Q 退出 #2.Format-Table案例 PS > ls | Format-Table * #因为属性和属性的内容太多可能不会显示完全
作者: HOS(安全风信子) 日期: 2026-02-13 主要来源平台: GitHub 摘要: 2026年,Git在Windows、macOS和Linux上的安装仍然存在命令找不到和PATH配置问题...1.1 Git命令找不到的主要表现 Windows:'git' 不是内部或外部命令,也不是可运行的程序或批处理文件。...1.2 2026年的新挑战 权限管理:现代操作系统的权限控制更加严格 路径长度限制:Windows路径长度限制仍然存在 虚拟化环境:Docker、WSL等环境中的Git配置 多版本共存:同时安装多个Git...添加Git安装路径:C:\Program Files\Git\bin # 4....确认Git安装路径 Get-ChildItem "C:\Program Files\Git\bin" # 2.
本系列说是人人都值得学PowerShell,也是因为其简单,无需高深的编程知识即可开始上手,几句代码就可以完成很多日常要重复性工作,本篇给大家展示下PowerShell的易上手,以几个小例子一同来感受一翻...PowerShell的过程中,我们更多只需要关心我们要做什么,然后最好能够想到相应的英文关键字,可以通过关键字搜索出相应的命令来,然后就可以查找其内置的帮助文档,连搜索引擎都不需要(翻译软件倒是需要的,因为帮助文件很不幸地是英文版的...遍历指定的Path路径,并且递归遍历子文件夹。这样的命令就可以运行起来。...Get-ChildItem -Path F:\自媒体相关\其他文章分享\powershell\文件夹遍历 -Recurse 可以按【运行选择】将当前选择状态下的代码运行。...当然只在控制台窗口中显示,没有太大意义,我们更想把结果存在文件里如Excel里可以打开,此时可以存在csv文件里,后面再介绍如何存到Excel文件中。
命令会提示位于命令管道位置 1 的 cmdlet New-Item请为以下参数提供值:Path[0]:这个时候我们不输入参数,直接点击回车按钮,会提示如下错误New-Item : 无法将参数绑定到参数“Path”,因为该参数为空数组...name test0622new.txt -path d:\log -itemtype file参数说明-name :指定对象名称,本次就是文件名 test0622new.txt-path:指定文件存储路径...get-help get-childitem -parameter *具体展示如下图:CodeSigningCert 表示为开关类型的数据,示例:D盘创建一个logs文件夹,文件夹内容如下图:首先获取文件夹内容get-childitem执行结果如下图:这里增加Recurse参数,这个参数可以实现下一级文件夹的递归访问...,命令如下:get-childitem -Recurse执行结果如下图:说明:针对开关函数,不需要去指定 true 和false ,如果加上 -参数,表示为true,如果执行命令不增加参数,表示为false
安装在您的主驱动器,C:\inetpub 上创建新的路径 (请参阅图 3)。 ? 图 3 IIS 安装后有几个文件系统添加。 你不需要使用此位置,当您创建额外的 Web 站点时。...您将使用此为管理任务和用于获取有关您的 Web 站点,信息,所以您应该导入的 WebAdministration 模块和查阅新的驱动器: PS C:\> Get-ChildItem...–Path IIS:\Sites IIS:提供程序的方法是可取的因为你也可以快速的所有文件的列表和其他 Web 站点组件的 Web 站点名称添加到路径: PS C:\>Get-ChildItem...在这种情况下,绑定是所有端口 80 的请求,因此,这里都是 URL: HTTP://:80 因为 80 端口是默认浏览器中的,您不需要键入的 — 但这样做有助于你看到一个...并将文件保存在 C:\inetpub\wwwroot 作为主页 (你也可以尝试它与 Windows PowerShell 的这种方式): PS C:\> Add-Content -Path
直接利用Get-ItemProperty命令通过路径参数来获取属性。...Get-ItemProperty -Path 'HKCU:\Control Panel\Desktop\MuiCached' -Name MachinePreferredUILanguages 编辑注册表项 下面这个路径是一个安全的注册表路径...首先回到上面那步工作表,因为如果要操作数据,需要在工作表对象上进行操作。...($j = 1; $j -le 9; ++$j) { $worksheet.Cells($i + 1, $j + 1) = $i * $j } } 操作之后,Excel表中应该存在如图所示的数据...这里推荐使用Powershell ISE,因为自动补全可以显示所有类型的图标,只需要修改一下图表类型并观察Excel中图标类型的变化就可以明白类型和图标的对应关系了。
假设你要获取系统中占用内存最多的前5个进程: 用CMD的话,你需要: tasklist /fo csv | findstr /v "Image Name" | sort /r /+5 | more +1 这还不一定能得到准确结果,因为文本处理很容易出错...文件和目录操作 Get-ChildItem(别名:ls, dir, gci)是最常用的命令之一,用来列出文件和目录: # 列出当前目录所有文件 Get-ChildItem # 递归列出所有子目录的文件...Get-ChildItem -Recurse # 只显示文件夹 Get-ChildItem -Directory # 按大小排序显示文件 Get-ChildItem | Sort-Object Length...不过刚开始可能会有点不适应,因为PowerShell的语法和传统的命令行差别还是挺大的。...Tab补全 PowerShell的Tab补全功能非常强大,不仅可以补全命令名,还能补全参数名和文件路径: # 输入Get-Proc然后按Tab,会自动补全为Get-Process # 输入Get-Process
, 同时还是一个可选参数, 因为参数名称和参数值位于同一个方括号内....比如在参数-ComputerName 和-Composit 都存在的情况 参数名称别名....例如Get-ChildItem C:\ 替代 Get-ChildItem -Path C:\ Show-Command cmdlet 命令可以在windows上以GUI的方式列出命令的参数名称 Powershell...你可以通过下面的命令查看当前Shell中已经存在的提供程序....Variable PSProvider操作注册表 Set-Location -Path HKCU: Set-Location xxx ## 选中要修改的注册表路径
not recognized as the name of a cmdlet, function, script file, or operable program.这表明系统无法找到 javac,通常是因为...添加 JDK 到 PATH 找到 JDK 的安装路径。...添加 JDK 的 bin 目录路径(例如:C:\Program Files\Java\jdk-17\bin)。...验证 JDK 安装路径如果您不确定 JDK 的安装路径,可以尝试以下方法查找:Windows: 使用以下命令查找 JDK 安装目录:Get-ChildItem -Path "C:\Program Files...如果问题仍然存在,请提供以下信息以便进一步诊断:运行 java -version 的输出。运行 $env:PATH 的输出(PowerShell 中查看 PATH 变量)。JDK 的安装路径。
Get-ChildItem -Filter "*.csv" -File | ForEach-Object { $newname = $_.Name -replace "CRO", "GRA" Rename-Item...$_.FullName $newname } 当运行此命令时,它将使用 Get-ChildItem cmdlet(命令行实用程序)获取当前目录中所有具有 .csv 扩展名的文件的列表,并将其传递到管道中...最后,Rename-Item _.FullName newname 将文件的完整路径名(_.FullName)与新的名称(newname)一起传递给 Rename-Item cmdlet,以便将文件重命名为新名称...稍等片刻,即可完成代码的运行;其中,当出现如下所示的字样,表明程序已经运行完毕(我这里因为当时按下了两次回车键,所以这段字样出现了两次)。
基础实例: #(1) New-Object可以创建一个对象,空对象什么都没有,如果调用它不会返回任何东西。...\test.ps1 3 6 # 2) 将脚本分为工作脚本和类库, 可以便于浏览增加可读性并且可以隔离含税使它不容易被修改; # 将上述的代码中Factorial函数保存在PSLib.ps1之中。...2.一种方法是分开存放,加载时就得使用绝对路径了。...抑制错误信息 函数中的错误信息,也有可能作为返回值的一部分,因为默认这些错误信息会直接输出。...27 Function ErrorTest() { #该进程不存在 Stop-Process -Name "www.mossfly.com" } ErrorTest Stop-Process : 找不到名为
PowerShell 旨在消除长期存在的问题和添加新功能,从而改进命令行和脚本环境。...cmdlet 的帮助信息 man Get-ChildItem help Get-ChildItem Get-Command 获取命令 描述:利用Get-Command可以采用通配符进行匹配查看 #0...LinkID=113332 #备注:Get-Help 在此计算机上找不到该 cmdlet 的帮助文件它仅显示部分帮助。...#1.PS设置别名样式 Set-Alias -Name gi -Value Get-Item 注意: PS内置别名无法被修改,否则会报错 Set-Alias :别名不可写入,因为别名 gi 为只读别名或常量...动态模块 一个仅存在于内存中的模块。 New-Module 和 Import-PSSession cmdlet 会创建动态模块。
主要关注的两个属性是,DependentServices ,Status,分别代表着依赖的服务以及本服务状态,腾讯云目前有采用DHCP(腾讯云官方提供),有时候会发现一些客户的机器异常获取不到IP,不少案例是因为客户的...DHCP Client及其依赖服务未开启导致,这个时候这个GetServer就起作用了,但是…… 服务导致系统异常通常是因为恶意服务注册,所以我们更关心的其实是服务路径以及自开启情况,在这里的输出并没有出来...,相对理想的排错场景应该是,输出服务的注册路径,对比是否与原生一致,不一致则代表服务器存在问题,由于有些进程来源服务所创建,如果可以的话,应该输出其关系(站在Windows Server运维者角度来说,...C:\Windows\Minidump\*.DMP" $date = Get-Date if ($TFD -eq $true) { $FileDateRS = Get-ChildItem...\$Dirfilename\$Logfilename" } if ($TMiniD -eq $true) { $FileRS = Get-ChildItem "C