Powershell Noobie 复制和创建具有正确权限的文件

Powershell Noobie 复制和创建具有正确权限的文件

我创建了一个 PowerShell 脚本,用于将文件复制到目录,该脚本首先创建一个文件夹,如果存在则强制执行新文件夹事件。然后从另一个位置复制目录。复制后,我需要根据执行脚本的用户给出的值复制正确的 Web 配置。我遇到的问题是我可以复制文件,但所有文件都设置为只读,这意味着当我尝试复制正确的 web.config 时,脚本会失败,因为访问被拒绝。

为了简单起见,这是一个精简版的脚本。

$WebApp_Root = 'C:\Documents and Settings\user\Desktop\Dummy.Website'

$Preview_WebApp_Root = 'c:\applications\Preview\'

$Choice = read-host("enter 'preview' to deploy to preview, enter Dummy to deploy to Dummy, or enter test to deploy to the test environment")
if (($Choice -eq 'Preview') -or ($Choice -eq 'preview'))
{
$Choice = 'Preview'
$Final_WebApp_Root  = $Preview_WebApp_Root
}

write-host("Releasing Build to " + $Choice +'...')

write-host("Emptying web folders or creating them if they don't exist... ")
New-Item $Final_WebApp_Root -type directory -force 

write-host("Copying Files... ")
Copy-Item $WebApp_Root $Final_WebApp_Root -recurse  

write-host("Copy the correct config file over the top of the dev web config...")
Copy-Item $Final_WebApp_Root\Config\$Choice\Web.configX $Final_WebApp_Root\web.config

write-host("Copying correct nhibernate config over")
Copy-Item $Final_WebApp_Root\Config\$Choice\NHibernate.config $Final_WebApp_Root\NHibernate.config

write-host("Deployed full application to environment")

答案1

执行 Copy-Item 时,使用 -Force 参数来绕过只读属性。如果这不起作用,那么您可以添加一个例程来使用 Get-Item 并暂时删除只读属性,复制文件,然后重置属性。

希望这可以帮助。

相关内容