New-Item 是什么
New-Item 创建文件、目录、注册表项、符号链接等对象,是脚本初始化环境的标准工具。它有一个很实用的特性:加上强制参数后会自动补齐缺失的父目录,创建多级目录时不必逐层建。另一个常见用法是创建文件时直接写入初始内容。需要注意的是它与其他写入命令的分工——创建已存在对象的行为、以及是否会清空既有内容,都与另一条命令不同,混用会造成数据被覆盖的意外。
基本信息
| 适用平台 | Windows PowerShell 5.1 与 PowerShell 7 及以上 |
|---|---|
| 语法 | New-Item [-Path] <路径> [-ItemType File|Directory|SymbolicLink|Junction] [-Value 内容] [-Force] |
| 适用对象 | 文件系统、注册表、证书等提供程序下的对象 |
| 强制参数 | 自动补齐父目录;对已存在文件不会清空内容 |
| 初始内容 | 用内容参数在创建时写入,也可创建后用写入命令追加 |
| 权限 | 创建符号链接需要管理员权限或开发者模式 |
典型使用场景
- 脚本初始化:一次性创建多级目录结构,缺失的父目录自动补齐
- 生成占位文件:任务开始前先建好日志文件
- 创建注册表项,用于写入配置
- 创建符号链接或目录联接,把数据目录指向另一块盘
- 配合路径判断命令实现幂等逻辑:不存在才创建
- 批量建目录:按主机名或日期建一批目录
常用示例
常用示例
# 创建多级目录,父目录自动补齐
New-Item -ItemType Directory -Path D:\Logs\App\2026 -Force
# 创建文件(已存在时不会清空内容)
New-Item -ItemType File -Path D:\Logs\app.log -Force
# 创建时写入初始内容
New-Item -ItemType File -Path D:\Logs\note.txt -Value 'created' -Force
# 幂等写法:不存在才创建
if (-not (Test-Path D:\Backup)) { New-Item -Path D:\Backup -ItemType Directory | Out-Null }
# 创建目录联接(需管理员)
New-Item -ItemType Junction -Path D:\Data -Target E:\Data
# 批量建目录
1..3 | ForEach-Object { New-Item -ItemType Directory -Path "D:\Logs\node$_" -Force }参数与行为
| 参数 | 作用 | 注意点 |
|---|---|---|
| -ItemType | 指定创建的对象类型 | 不指定时按提供程序默认规则处理 |
| -Force | 补齐父目录,允许覆盖部分场景 | 对已存在文件不清空内容 |
| -Value | 创建时写入初始内容 | 换行需按字符串转义处理 |
| -Target | 符号链接与联接指向的目标 | 目标不存在时会创建失败 |
| -WhatIf | 预演将创建的对象 | 建立初始化脚本时先看一眼 |
对已存在的文件使用强制参数不会清空内容,想要清空重写要用专门的写入命令。把两条命令的语义搞混,是「明明是新建却把旧内容留下」或「想保留却把文件清空」的常见原因。
创建符号链接需要在管理员会话或开启了开发者模式的环境中执行,普通会话会报权限不足,这是权限限制而不是命令用错。