New-PSDrive 驱动器映射名称
New-PSDrive drive mapping name
在我的 powershell 脚本中,我使用 New-PSDrive 函数将远程服务器文件路径映射到我的本地计算机,作为 windows 部署操作过程。
我计划在未来重用这个 Powershell 脚本,所以我不希望驱动器之间因为命名而发生任何冲突。例如,如果两个部署操作需要同时到达脚本,那么两个中的一个就会部署不正确。
问题是:我可以使用时间戳或任何其他唯一信息作为驱动器映射名称吗?这样我就可以确定避免名称冲突。
编辑:
我尝试创建不带持久参数的自定义命名 new-psdrive 映射,但那样的话,powershell 会尝试访问具有相对路径的文件夹(在当前工作目录下)
这是我尝试复制一些文件(备份)的代码:
$day = Get-Date -Format "yyyyMMdd"
$appsource = "\$computername\D$\Applications"
New-PSDrive -Name J -PSProvider FileSystem -Root $appsource-Credential $cred -persist
Write-Host "Backup işlemi başladı."
robocopy "J:\App" "J:\backup$day"
编辑 2:
您不能使用动态名称作为永久驱动器映射名称。如果你要达到跨域计算机,最好的方法是(但成本效益高的方法)在远程计算机上使用 Invoke-Command for 运行 脚本。需要允许 2 种方式(远程-本地、本地-远程)文件共享权限。如果你使用 Invoke-Command,你就没有冲突。因为该命令在远程计算机上使用动态会话。
根据 Get-Help New-PSDrive -full
中的文档,新驱动器的名称以字符串形式提供,因此如果您可以在将字符串传递给 New-PSDrive
,你可以将它用作驱动器名称。请注意,您应该避免在路径名中出现问题的字符,例如 spaces 和保留字符(例如 \
、:
、/
、通配符、等)。
由于您的编辑显示您正在使用 ROBOCOPY
,它运行 "outside" PowerShell 的 code/memory space,您可能无法使用 New-PSDrive
建立映射 - 我得到了不一致的结果。更可靠的方法是使用 NET USE
建立映射 - 在您的情况下,NET USE J: $appsource
可能会成功。
由于 Windows-映射的驱动器对名称有硬性要求(这是在使用持久参数时创建的名称),使用调用命令并传入脚本块可能比映射驱动器更好完全没有。
$SB = {
$day = Get-Date -Format "yyyyMMdd"
Robocopy "D:\Test\App" "D:\Test\backup$day"
}
Invoke-Command -ComputerName $CompName -Credential $cred -ScriptBlock $SB
这样就无需担心映射驱动器冲突
在我的 powershell 脚本中,我使用 New-PSDrive 函数将远程服务器文件路径映射到我的本地计算机,作为 windows 部署操作过程。
我计划在未来重用这个 Powershell 脚本,所以我不希望驱动器之间因为命名而发生任何冲突。例如,如果两个部署操作需要同时到达脚本,那么两个中的一个就会部署不正确。
问题是:我可以使用时间戳或任何其他唯一信息作为驱动器映射名称吗?这样我就可以确定避免名称冲突。
编辑:
我尝试创建不带持久参数的自定义命名 new-psdrive 映射,但那样的话,powershell 会尝试访问具有相对路径的文件夹(在当前工作目录下)
这是我尝试复制一些文件(备份)的代码:
$day = Get-Date -Format "yyyyMMdd"
$appsource = "\$computername\D$\Applications"
New-PSDrive -Name J -PSProvider FileSystem -Root $appsource-Credential $cred -persist
Write-Host "Backup işlemi başladı."
robocopy "J:\App" "J:\backup$day"
编辑 2:
您不能使用动态名称作为永久驱动器映射名称。如果你要达到跨域计算机,最好的方法是(但成本效益高的方法)在远程计算机上使用 Invoke-Command for 运行 脚本。需要允许 2 种方式(远程-本地、本地-远程)文件共享权限。如果你使用 Invoke-Command,你就没有冲突。因为该命令在远程计算机上使用动态会话。
根据 Get-Help New-PSDrive -full
中的文档,新驱动器的名称以字符串形式提供,因此如果您可以在将字符串传递给 New-PSDrive
,你可以将它用作驱动器名称。请注意,您应该避免在路径名中出现问题的字符,例如 spaces 和保留字符(例如 \
、:
、/
、通配符、等)。
由于您的编辑显示您正在使用 ROBOCOPY
,它运行 "outside" PowerShell 的 code/memory space,您可能无法使用 New-PSDrive
建立映射 - 我得到了不一致的结果。更可靠的方法是使用 NET USE
建立映射 - 在您的情况下,NET USE J: $appsource
可能会成功。
由于 Windows-映射的驱动器对名称有硬性要求(这是在使用持久参数时创建的名称),使用调用命令并传入脚本块可能比映射驱动器更好完全没有。
$SB = {
$day = Get-Date -Format "yyyyMMdd"
Robocopy "D:\Test\App" "D:\Test\backup$day"
}
Invoke-Command -ComputerName $CompName -Credential $cred -ScriptBlock $SB
这样就无需担心映射驱动器冲突