我正在尝试使用PowerShell在服务器上创建一个文件夹。脚本如下所示:
$pass = ConvertTo-SecureString "myPW" -AsPlainText -Force
$cred = new-object System.Management.Automation.PSCredential("myUser", $pass)
$session = New-PSSession -ComputerName "localhost" -Credential $cred
Invoke-Command -session $session -ScriptBlock {
New-Item -Path "\\myServer\myShare\" -Name "myFolder" -ItemType directory -Force
}
我收到以下错误:
Access is denied
+ CategoryInfo : PermissionDenied: (\\myServer\myShare:String) [New-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.NewItemCommand
+ PSComputerName : localhost
Access to the path 'myShare' is denied.
+ CategoryInfo : PermissionDenied: (\\myServer\myShare:String) [New-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : CreateDirectoryUnauthorizedAccessError,Microsoft.PowerShell.Commands.NewItemCommand
+ PSComputerName : localhost
Access to the path 'myFolder' is denied.
+ CategoryInfo : PermissionDenied: (\\myServer\myShare\myFolder:String) [New-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : CreateDirectoryUnauthorizedAccessError,Microsoft.PowerShell.Commands.NewItemCommand
+ PSComputerName : localhost
起初我认为该消息非常清楚,我使用的用户缺少权限。但事情就是这样:如果我在资源管理器中转到共享并使用同一个用户登录,我可以创建一个没有任何问题的文件夹。除此之外,用户是域管理员。
我做错了什么?
答案 0 :(得分:1)
这是一个双跳,您正在连接到PSSession,然后尝试访问该文件夹。
作为安全措施,PowerShell不允许您远程连接到一台计算机,然后从那里远程连接到另一台计算机(即使其中两台是同一台计算机)。确切的推理是复杂的,并且在会话中如何使用凭证,我自己并不完全理解,所以我不会尝试解释,但基本上是为了防止凭证被盗。
你可以对它进行一些阅读(this looks like a good resource)但是尝试找出另一种方法可能会更简单。您只是远程连接到本地计算机,因此您可以启动另一个PS进程。
答案 1 :(得分:0)
如果您只是使用PSSession替代凭据来访问共享,那么使用New-PSDrive
可能是另一种方法:
$pass = ConvertTo-SecureString "myPW" -AsPlainText -Force
$cred = new-object System.Management.Automation.PSCredential("myUser", $pass)
New-PSDrive -Name myShare -PSProvider FileSystem -Root "\\myServer\myShare\" -Credential $cred
New-Item -Path "myShare:\" -Name "myFolder" -ItemType directory -Force