我想通过PowerShell自动完成我的许多日常任务.我们的一个过程是在下班后对台式机进行成像.完成此操作后,需要将映像文件从服务器硬盘驱动器移至网络驱动器.我正在编写一个应用程序,在我的机器上作为服务运行,它将调用powershell脚本并将所有内容敲除,只在出现问题时提醒我.
我在服务器上为脚本设置了一个目录.如果我从服务器调用我的脚本FileCopy.ps1,它可以正常工作:
copy-item C:\scripts\myFile1.txt -destination C:\scripts\myFile2.txt
Run Code Online (Sandbox Code Playgroud)
但是,在我的.Net应用程序中,我从本地计算机调用脚本:
RunScript(LoadScript(@"\\Server\ServerShare\FileCopy.ps1"));
Run Code Online (Sandbox Code Playgroud)
不行.那是因为它将C:\ scripts看作是在本地机器上.所以,我改变它:
copy-item \\Server\ServerShare\myFile1.txt -destination \\Server\ServerShare\myFile2.txt
Run Code Online (Sandbox Code Playgroud)
不行.我在脚本中添加了另一行:
copy-item \\Server\ServerShare\myFile1.txt -destination \\Server\ServerShare\myFile2.txt
get-childitem \\Server\ServerShare | format-table name
Run Code Online (Sandbox Code Playgroud)
它仍然不复制文件,但它确实返回服务器上scripts目录的内容.
所以我回到服务器并运行带有UNC路径的脚本 - powershell返回错误
Copy-Item : Access to the path '\\Server\ServerPath\myFile2.txt' is denied.
Run Code Online (Sandbox Code Playgroud)
这似乎是问题的根源.知道如何解决这个问题吗?我以管理员身份登录服务器.
以管理员身份运行脚本与网络共享IIRC无关.默认共享权限仅允许读取.需要更新这些权限以允许写入共享.
仅供参考,如果您使用的net share是在Windows 7上创建共享,则需要使用它/grant:<users>,CHANGE来授予用户这些权限.