我知道这是一个许可的问题,但我不知道在哪里。
基本上我有一个PowerShell脚本,从本地用户获取一些信息,然后通过python将其发送到API。由于某种原因,我发布的API不能正确地从PowerShell中获取JSON(认为无论你做什么都是畸形的),所以我使用python来做最后一点。
调用必须来自我们的服务器ip所以我必须将信息传递给服务器&python文件并调用服务器来调用API。我这样做:
Invoke-Command -ComputerName $servername -ScriptBlock {python.exe "PATH TO .PY" -id $using:CaseID -tag $using:serviceTag -m $using:message}
我:
C:PATH-TOpython.exe: can't open file 'PATH TO .PY': [Errno 13] Permission denied
python文件在网络共享中。我试着给"每个人"将读/写分组到文件夹中查看结果,但结果仍然相同。
我唯一的想法是,当服务器执行时,scriptblock在哪个用户下运行,以及我是否需要提供凭据。
正如评论所说,这是一个臭名昭著的PowerShell双跳问题。
服务器(我)调用服务器B在"服务器c"上运行脚本。(网络共享).
我说"Server "是因为网络共享被附加到服务器B本身。我在脚本块中使用了直接路径而不是网络共享路径,一切正常。从服务器A到服务器B。
以前,我打算采用传递凭据的方式(不是Credssp的粉丝),但是当我传递凭据时,即使这样也不起作用。
最好的文档在这里:https://learn.microsoft.com/en-us/archive/blogs/ashleymcglone/powershell-remoting-kerberos-double-hop-solved-securely