[玩转系统] PowerShell:创建、删除、复制、重命名和移动文件
作者:精品下载站 日期:2024-12-14 06:09:24 浏览:12 分类:玩电脑
PowerShell:创建、删除、复制、重命名和移动文件
每天,系统管理员都必须对其 Windows 服务器上的大量文件和文件夹执行各种标准操作。这些任务通常包括管理共享资源上的用户数据以及正确维护备份。您可以使用 PowerShell 来减少涉及的手动工作量。
在开始之前,请确保您的系统策略允许运行 PowerShell 脚本,如“Windows PowerShell 初学者脚本教程”中所述。
查看目录中的对象
要查看 Windows 文件服务器上目录的内容,请使用 Get-ChildItem cmdlet。要显示所有隐藏文件,请添加 -Force 参数。以下命令显示共享文件夹中的所有根对象:
Get-ChildItem -Force \fsShared
如果您还想检查所有子文件夹及其内容,请添加 -Recurse 参数:
Get-ChildItem -Force \fsShared -Recurse
要筛选输出,请将“筛选”、“排除”、“包含”和“路径”参数添加到 Get-ChildItem cmdlet。对于高级对象筛选,请使用Where-Object cmdlet。下面的脚本搜索 IT 文件夹中 2018 年 4 月 1 日之后修改的所有可执行文件:
Get-ChildItem -Path \fsSharedIT -Recurse -Include *.exe | Where-Object -FilterScript {($_.LastWriteTime -gt '2018-04-01')}
使用 PowerShell 创建文件和文件夹
要使用 Windows PowerShell 创建新对象,您可以使用 New-Item cmdlet 并指定要创建的项目类型,例如目录、文件或注册表项。
例如,此命令创建一个文件夹:
New-Item -Path '\fsSharedNewFolder' -ItemType Directory
此命令创建一个空文件:
New-Item -Path '\fsSharedNewFoldernewfile.txt' -ItemType File
创建文件并向其中写入数据
至少有两种内置方法来创建文件并向其中写入数据。第一种是使用 Out-File cmdlet:
$text = 'Hello World!' | Out-File $text -FilePath C:datatext.txt
要覆盖现有文件,请使用 -Force 开关参数。
您还可以使用 Export-Csv cmdlet 创建文件,它将输出导出到可在 Excel 中打开的 csv 文件:
Get-ADuser -Filter * | Export-Csv -Path C:dataADusers.csv
检查文件不存在后创建文件
以下脚本检查特定文件夹中是否已存在特定文件 (pc.txt);如果没有,它会生成所有 AD 计算机的列表并将其保存到名为 pc.txt 的新文件中:
#create array of text files
$files=Get-ChildItem C:data*.txt | select -expand fullname
#check if file exists inside the array
$files -match "pc.txt"
#if matching return “True” key then exit, if “False” then create a report
if($files -eq 'False'){
Get-ADComputer -Filter * | Export-Csv -Path C:datapc.txt
}
else{exit}
使用 PowerShell 删除文件和文件夹
要删除对象,请使用Remove-Item cmdlet。请注意,如果对象不为空,则执行时需要您确认。下面的示例演示了如何删除 IT 文件夹及其中的所有子文件夹和文件:
Remove-Item -Path '\fssharedit'
Confirm
The item at \pdcsharedit has children and the Recurse parameter was not
specified. If you continue, all children will be removed with the item. Are you
sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
如果您已经确保应删除文件夹内的每个对象,则可以使用 ?Recurse 开关跳过确认步骤:
Remove-Item -Path '\fssharedit' -Recurse
删除超过 X 天的文件和文件夹
有时您需要清理某个目录中的旧文件。这是实现这一目标的方法:
$Folder = "C:Backups"
#delete files older than 30 days
Get-ChildItem $Folder -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-30)} |
ForEach-Object {
$_ | del -Force
$_.FullName | Out-File C:logdeletedbackups.txt -Append
}
#delete empty folders and subfolders if any exist
Get-ChildItem $Folder -Recurse -Force -ea 0 |
? {$_.PsIsContainer -eq $True} |
? {$_.getfiles().count -eq 0} |
ForEach-Object {
$_ | del -Force
$_.FullName | Out-File C:logdeletedbackups.txt -Append
}
检查文件存在后删除它们
以下是检查文件是否存在并在存在时将其删除的方法:
$FileName = 'C:datalog.txt'
If (Test-Path $FileName){
Remove-Item $FileName
}
在一个脚本中删除多台计算机上的文件
要从远程电脑删除文件,您必须具有适当的安全权限才能访问它们。请务必使用 UNC 路径,以便脚本能够正确解析文件位置。
$filelist = @(" c$Temp", "c$Backups") #variable to delete files and folder
$computerlist = Get-Content C:datapc.txt #get list of remote pc's
foreach ($computer in $computerlist){
foreach ($file in $filelist){
$filepath= Join-Path "$computer" "$filelist" #generate unc paths to files or folders
if (Test-Path $filepath)
{
Remove-Item $filepath -force -recurse -ErrorAction Continue}}}
使用 PowerShell 复制文件和文件夹
Copy-Item cmdlet 使您能够将对象从一个路径复制到另一路径。以下命令通过从一台远程计算机 (fs) 复制文件 users.xlsx 并将其通过网络保存到另一台计算机 (fs2) 来创建备份:
Copy-Item -Path \fsShareditusers.xlsx -Destination \fs2Backupsitusers.xlsx
如果目标文件已存在,则复制尝试将失败。要覆盖现有文件,即使它处于只读模式,也请使用 -Force 参数:
Copy-Item -Path \fsShareditusers.xlsx -Destination \fs2Backupsitusers.xlsx -Force
使用 PowerShell 将文件复制到远程计算机或从远程计算机复制文件
如果您要将文件复制到远程计算机或从远程计算机复制文件,请务必使用 UNC 路径。
例如,使用以下命令将文件从远程文件服务器复制到本地 C: 目录:
Copy-Item \fsc$temp -Recurse C:data
要将文件从本地目录复制到远程文件夹,只需颠倒源位置和目标位置即可:
Copy-Item C:data -Recurse \fsc$temp
在一个脚本中通过网络将多个文件从一台服务器复制到另一台服务器
您还可以将文件从一台远程服务器复制到另一台远程服务器。以下脚本将 \fsSharedtemp 文件夹递归复制到 \fsSharedtest:
Copy-Item \fsSharedtemp -Recurse \fsSharedtest
仅复制某些类型的文件
要仅将某些文件从源内容复制到目标,请使用 -Filter 参数。例如,以下命令仅将 txt 文件从一个文件夹复制到另一个文件夹:
Copy-Item -Filter *.txt -Path \fsSharedit -Recurse -Destination \fs2Sharedtext
使用 XCOPY 和 ROBOCOPY 命令或 COM 对象复制文件
您还可以运行 XCOPY 和 ROBOCOPY 命令来复制文件,或使用 COM 对象,如下例所示:
(New-Object -ComObject Scripting.FileSystemObject).CopyFile('\fsShared', 'fs2Backup')
使用 PowerShell 移动文件和目录
Move-Item cmdlet 将项目(包括其属性、内容和子项目)从一个位置移动到另一个位置。它还可以将文件或子目录从一个目录移动到另一位置。
以下命令将特定备份文件从一个位置移动到另一个位置:
Move-Item -Path \fsSharedBackups1.bak -Destination \fs2Backupsarchive1.bak
此脚本将整个备份文件夹及其内容移动到另一个位置:
Move-Item -Path \fsSharedBackups -Destination \fs2Backupsarchive
然后,备份目录及其所有文件和子文件夹将出现在存档目录中。
使用 PowerShell 重命名文件
Rename-Item cmdlet 使您能够更改对象的名称,同时保持其内容不变。无法使用“重命名项目”命令来移动项目;对于该功能,您应该使用如上所述的 Move-Item cmdlet。
以下命令重命名文件:
Rename-Item -Path "\fsSharedtemp.txt" -NewName "new_temp.txt"
重命名多个文件
要一次重命名多个文件,请使用如下脚本:
$files = Get-ChildItem -Path C:Temp #create list of files
foreach ($file in $files)
{
$newFileName=$file.Name.Replace("A","B") #replace "A" with "B"
Rename-Item $file $newFileName
}
使用 PowerShell 更改文件扩展名
您还可以使用重命名项来更改文件扩展名。如果要一次更改多个文件的扩展名,请结合使用 Rename-Item cmdlet 和 Get-ChildItem cmdlet。
以下脚本将所有“txt”文件扩展名更改为“bak”。通配符 (*) 确保包含所有文本文件:
Get-ChildItem \fsSharedLogs*.txt | Rename-Item -NewName { $_.name -Replace '.txt$','.bak' }
使用本文中的信息,您可以自动执行与文件存储上的文件管理相关的各种简单操作,并节省时间来执行更重要的任务。祝你好运!
常问问题
如何创建文件?
使用 New-Item cmdlet 创建文件:
New-Item -Path '\fsSharedNewFoldernewfile.txt' -ItemType File
创建文件会覆盖任何现有的同名文件,因此您可能需要检查该文件是否已存在。
您还可以使用 New-Item cmdlet 创建文件夹、目录或注册表项。
如何创建文本文件
要使用 Windows PowerShell 创建新对象,请使用 New-Item cmdlet 并指定要创建的项目的类型,如下所示:
New-Item -Path '\fsSharedNewFoldernewfile.txt' -ItemType File
您可以使用 New-Item cmdlet 创建文件、文件夹、目录和注册表项。
如何创建目录
要使用 PowerShell 创建新目录,请使用 New-Item cmdlet:
New-Item -Path '\fsSharedNewFolder' -ItemType Directory
您还可以使用 New-Item cmdlet 创建文件、文件夹或注册表项
如何删除文件?
要删除对象,请使用Remove-Item cmdlet。如果对象不为空,则执行时将请求确认。
Remove-Item -Path '\fssharedit'
您还可以使用 PowerShell 删除所有早于 X 天的文件或从多台计算机中删除文件。
如何复制文件?
使用 Copy-Item cmdlet 将对象从一个路径复制到另一路径。以下命令通过将文件 users.xlsx 通过网络从一台远程计算机 (fs) 复制到另一台远程计算机 (fs2) 来创建备份:
Copy-Item -Path \fsShareditusers.xlsx -Destination \fs2Backupsitusers.xlsx
请注意,如果目标文件已存在,则复制尝试将失败。了解从远程计算机复制文件或将文件复制到远程计算机时如何覆盖文件。
如何移动文件?
Move-Item cmdlet 将项目(包括其属性、内容和子项目)从一个位置移动到另一个位置:
Move-Item -Path \fsSharedBackups1.bak -Destination \fs2Backupsarchive1.bak
您还可以使用 PowerShell 移动整个文件夹。
如何重命名文件?
要使用 PowerShell 重命名单个文件,请使用以下命令:
Rename-Item -Path "\fsSharedtemp.txt" -NewName "new_temp.txt"
您还可以使用 PowerShell 重命名多个文件。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag