Chef powershell_脚本是否具有有限的权限?

Chef powershell_脚本是否具有有限的权限?,powershell,chef-infra,chef-recipe,Powershell,Chef Infra,Chef Recipe,我遇到了几种情况,其中,在使用powershell_scipt的Chef配方中,一个命令似乎失败,而如果我在Chef外部的powershell中运行相同的命令,则相同的命令会起作用 这两个特别是“regedit”,我试图用它来设置应用程序兼容性的键,另一个是“net use z:…”来创建映射驱动器。如果我在powershell中运行这两个脚本,它们似乎都可以正常工作,但如果我在powershell\u脚本中的配方中使用它们,它们似乎什么都不起作用 所以我想知道这是不是因为Chef以较低的权限级

我遇到了几种情况,其中,在使用powershell_scipt的Chef配方中,一个命令似乎失败,而如果我在Chef外部的powershell中运行相同的命令,则相同的命令会起作用

这两个特别是“regedit”,我试图用它来设置应用程序兼容性的键,另一个是“net use z:…”来创建映射驱动器。如果我在powershell中运行这两个脚本,它们似乎都可以正常工作,但如果我在powershell\u脚本中的配方中使用它们,它们似乎什么都不起作用

所以我想知道这是不是因为Chef以较低的权限级别运行powershell_脚本中的命令

如果是这样的话,我该如何更改它,以便regedit和net使用可以正常工作

谢谢, 吉姆

编辑1:这似乎适用于添加我需要的注册表项:

registry_key "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags" do
  values [{
    :name => "{2b9034f3-b661-4d36-a5ef-60ab5a711ace}",
    :type => :dword,
    :data => 00000004
  }]
  action :create
end
这可以防止在运行Sharepoint安装程序时出现兼容性弹出窗口

编辑2:我希望这是好的,但是为了记录和更多的可视性,希望我记住这一点,我发现了这一点。在Windows和Chef中映射驱动器:

以及:


我还没有尝试过,但这似乎是我的驱动器映射需要的答案。。。。希望.

chef客户端服务在默认情况下作为本地系统(
System
)运行

在Windows中,该用户在本地系统上具有完全权限,基本上类似于
root
,但在网络上它作为计算机对象进行身份验证

因此,如果您试图使用
regedit
更改某些内容,例如
HKEY_CURRENT_USER
,那么您需要记住,代码将不会看到与您以交互方式运行时相同的“CURRENT USER”。此外,regedit是一个.exe;您应该通过PowerShell提供程序或.Net对象真正完成所需的工作

对于
net use
,您正在尝试映射驱动器。计算机帐户可能没有用户拥有的共享权限。同样,
net.exe
是一个单独的可执行文件<代码>网络使用将驱动器映射到驱动器号(通常),我认为您不应该在配置脚本中这样做。您应该直接访问UNC路径,但无论如何,我仍然认为您可能在这里遇到了权限问题


您可以更改服务的凭据,使用具有您想要的所有权限的用户帐户,但是在这样做之前,您应该考虑更改工作流以不需要它。

我理解您所说的,关于我们应该做网络使用(映射网络驱动器)和厨师流程之外的注册表,但在我们的场景中,他们希望有一种裸露的Windows映像开始,然后远程安装。他们不希望为特定用途准备计算机,例如,他们不希望Sharepoint计算机有一个Windows映像,Exchange计算机有另一个Windows映像。很抱歉,我按了Enter键:)。不管怎样,你直接提到了北卡罗来纳大学。我该怎么做?我的意思是我可以在安装路径中使用\\192.168.0.236\foo,而不是映射驱动器,但是使用UNC也可以进行身份验证吗?另外,对于regedit,您建议使用什么替代方法?我正在尝试(但失败)的是powershell_脚本中的regedit。它没有给我任何错误。。。它什么也不做(不更改注册表)。这似乎对我需要的注册表更改起到了作用-哎呀,我想我会将它添加到上面的OP中。在powershell中映射驱动器的方法是使用
New PSDrive
。您应该能够为它提供一个
-Credential
参数,但我认为尝试以不同的方式看待这个问题可能会有所帮助。例如,为什么需要网络驱动器?也许最好在HTTP服务器上托管一个存档,然后在配置期间下载、解压缩并在本地处理文件。