New-Item

创建新项。

语法

New-Item
   [-Path] <String[]>
   [-ItemType <String>]
   [-Value <Object>]
   [-Force]
   [-Credential <PSCredential>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-Item
   [[-Path] <String[]>]
   -Name <String>
   [-ItemType <String>]
   [-Value <Object>]
   [-Force]
   [-Credential <PSCredential>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

说明

cmdlet New-Item 创建一个新项并设置其值。 可创建的项类型取决于项的位置。 例如,在文件系统中, New-Item 创建文件和文件夹。 在注册表中, New-Item 创建注册表项和条目。

New-Item 还可以设置它所创建的项的值。 例如,当它创建新文件时, New-Item 可以向该文件添加初始内容。

示例

示例 1:在当前目录中Create文件

此命令在当前目录中创建名为“testfile1.txt”的文本文件。 点 ('。 path 参数的值中的 ) 指示当前目录。 Value 参数后面的带引号的文本将作为内容添加到文件中。

New-Item -Path . -Name "testfile1.txt" -ItemType "file" -Value "This is a text string."

示例 2:Create目录

此命令在驱动器中创建名为“Logfiles”的 C: 目录。 ItemType 参数指定新项是目录,而不是文件或其他文件系统对象。

New-Item -Path "c:\" -Name "logfiles" -ItemType "directory"

示例 3:Create配置文件

此命令在 变量指定的 $profile 路径中创建 PowerShell 配置文件。

可以使用配置文件自定义 PowerShell。 $profile 是一个自动 (内置) 变量,用于存储“CurrentUser/CurrentHost”配置文件的路径和文件名。 默认情况下,即使 PowerShell 存储其路径和文件名,配置文件也不存在。

在此命令中 $profile , 变量表示文件的路径。 ItemType 参数指定命令创建文件。 Force 参数允许在配置文件路径中创建文件,即使路径中的目录不存在也是如此。

创建配置文件后,可以在配置文件中输入别名、函数和脚本来自定义 shell。

有关详细信息,请参阅 about_Automatic_Variablesabout_Profiles

New-Item -Path $profile -ItemType "file" -Force

示例 4:Create不同目录中的目录

此示例在“C:\PS-Test”目录中创建新的 Scripts 目录。

新目录项的名称“Scripts”包含在 Path 参数的值中,而不是在 Name 的值中指定。 根据语法,任一种命令形式都是有效的。

New-Item -ItemType "directory" -Path "c:\ps-test\scripts"

示例 5:Create多个文件

此示例在两个不同的目录中创建文件。 由于 Path 需要多个字符串,因此可以使用它来创建多个项。

New-Item -ItemType "file" -Path "c:\ps-test\test.txt", "c:\ps-test\Logs\test.log"

示例 6:使用通配符在多个目录中创建文件

cmdlet New-Item 支持 Path 参数中的通配符。 以下命令在 Path 参数中的通配符指定的所有目录中创建temp.txt文件。

Get-ChildItem -Path C:\Temp\

Directory:  C:\Temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d-----        5/15/2019   6:45 AM        1   One
d-----        5/15/2019   6:45 AM        1   Two
d-----        5/15/2019   6:45 AM        1   Three

New-Item -Path C:\Temp\* -Name temp.txt -ItemType File | Select-Object FullName

FullName
--------
C:\Temp\One\temp.txt
C:\Temp\Three\temp.txt
C:\Temp\Two\temp.txt

cmdlet Get-ChildItem 在 目录下显示三个 C:\Temp 目录。 使用通配符, New-Item cmdlet 会在当前目录下的所有目录中创建一个 temp.txt 文件。 cmdlet New-Item 输出你创建的项,这些项通过管道传递给 Select-Object 以验证新创建的文件的路径。

示例 7:Create指向文件或文件夹的符号链接

此示例创建指向当前文件夹中 Notice.txt 文件的符号链接。

$link = New-Item -ItemType SymbolicLink -Path .\link -Target .\Notice.txt
$link | Select-Object LinkType, Target

LinkType     Target
--------     ------
SymbolicLink {.\Notice.txt}

在此示例中, TargetValue 参数的别名。 符号链接的目标可以是相对路径。 在 PowerShell v6.2 之前,目标必须是完全限定的路径。

从 PowerShell 7.1 开始,现在可以使用相对路径创建到 Windows 上文件夹的 SymbolicLink

示例 8:使用 -Force 参数尝试重新创建文件夹

此示例创建一个文件夹,其中包含一个文件。 然后,尝试使用 -Force创建同一文件夹。 它不会覆盖文件夹,而只是返回创建的文件保持不变的现有文件夹对象。

PS> New-Item -Path .\TestFolder -ItemType Directory
PS> New-Item -Path .\TestFolder\TestFile.txt -ItemType File

PS> New-Item -Path .\TestFolder -ItemType Directory -Force

    Directory: C:\
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         5/1/2020   8:03 AM                TestFolder

PS> Get-ChildItem .\TestFolder\

    Directory: C:\TestFolder
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         5/1/2020   8:03 AM              0 TestFile.txt

示例 9:使用 -Force 参数覆盖现有文件

此示例创建一个具有 值的文件,然后使用 重新创建该文件 -Force。 这将覆盖现有文件,它将丢失其内容,你可以通过 length 属性看到

PS> New-Item ./TestFile.txt -ItemType File -Value 'This is just a test file'

    Directory: C:\Source\Test
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         5/1/2020   8:32 AM             24 TestFile.txt

New-Item ./TestFile.txt -ItemType File -Force

    Directory: C:\Source\Test
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         5/1/2020   8:32 AM              0 TestFile.txt

注意

New-Item 与 开关一起使用 -Force 来创建注册表项时,命令的行为与覆盖文件时的行为相同。 如果注册表项已存在,则将用空注册表项覆盖该注册表项以及所有属性和值。

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

注意

随 PowerShell 一起安装的任何提供程序都不支持此参数。 若要在运行此 cmdlet 时模拟其他用户或提升凭据,请使用 Invoke-Command

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Force

强制此 cmdlet 创建对现有只读项进行写入的项。 不同提供程序有不同的实现。 即使使用 Force 参数,cmdlet 也无法替代安全限制。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ItemType

指定提供程序指定的新项的类型。 此参数的可用值取决于所使用的当前提供程序。

如果你的位置在驱动器中 FileSystem ,则允许使用以下值:

  • 文件
  • Directory
  • SymbolicLink
  • 交接点
  • HardLink

注意

在 Windows 上创建 SymbolicLink 类型需要提升管理员身份。 但是,启用开发人员模式Windows 10 (版本 14972 或更高版本) 不再需要提升创建符号链接。

在驱动器中 Certificate ,可以指定以下值:

  • Certificate 提供程序
  • 证书
  • 存储
  • StoreLocation

有关详细信息,请参阅 about_Providers

Type:String
Aliases:Type
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

指定新项的名称。 可以在 NamePath 参数值中指定新项的名称,也可以在 NamePath 值中指定新项的路径。 使用 Name 参数传递的项名称是相对于 Path 参数的值创建的。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

指定新项的位置的路径。 省略 Path 时,默认值为当前位置。 可以在“ 名称”中指定新项的名称,或将其包含在 “路径”中。 使用 Name 参数传递的项名称是相对于 Path 参数的值创建的。

对于此 cmdlet,Path 参数的工作方式与其他 cmdlet 的 LiteralPath 参数类似。 不解释通配符。 所有字符都传递给位置的提供程序。 提供程序可能不支持所有字符。 例如,不能创建包含星号的文件名 (*) 字符。

Type:String[]
Position:0
Default value:Current location
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Value

指定新项的值。 还可以通过管道将值传递给 New-Item

Type:Object
Aliases:Target
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 此 cmdlet 未运行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

Object

可以通过管道将新项的值传递给此 cmdlet。

输出

Object

此 cmdlet 返回它创建的项。

备注

New-Item 旨在处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PsProvider。 有关详细信息,请参阅 about_Providers