我有一个应用程序需要配置所需的本地帐户。我在里面创建了一个模块,我有2个文件夹:
files
manifests
在清单init文件中,我有以下代码:
class xyz {
exec { ' app_config':
command => ' C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe -file c:\provisioning\modules\xyz\files\config1.ps1 '
}
}
在files文件夹下有2个文件:
config1.ps1
app_execute.bat
在config1.ps1
我正在创建一个本地用户:
$user = $env:COMPUTERNAME/Testing
$Credentials = New-Object -TypeName System.Management.Automation.PScredential -ArgumentList $user, ("test@3456", | ConvertTo-SecureString -AsPlainText -Force)
Start-Process C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe -Credential $Credentials -ArgumentList " Start-Process C:\Windows\System32\cmd.exe -File c:\provisioning\c:\provisioning\modules\xyz\files\app_execute.bat "
在app_execute.bat
c:\puppet\app.bat -f c:\puppet\responsefile.rsp
日志文件显示PowerShell文件config1.ps1
已成功执行,但未生成应用程序日志文件,但在手动执行时,config1.ps1
应用程序将进行配置。
不确定,在config1.ps1
中,我使用Start-Process
,这将使用本地帐户创建单独的流程。
我认为Puppet不会等待上述config1.ps1
成功完成。
不确定为什么它没有完全执行就出来了,是否有任何条件,因为我们只需要在init中执行一个文件,因为我正在启动2个进程。
答案 0 :(得分:1)
对于你的命令,这对我有用,我在Puppet的工作中复制它:
command => 'powershell -ExecutionPolicy RemoteSigned -file C:\<path to .ps1>'
要记住的关键:
ECHO user_creation_need=true
或=false
https://docs.puppet.com/puppet/4.3/reference/quick_start_user_group.html
现在,在Puppet中创建用户非常棒,因为您不需要上述任何指示。代替:
class user_group_creator {
group {'Cool People':
name => 'Cool People',
members => ['User1','User3'],
ensure => present,
}
user {'User2':
ensure => present,
name => 'User2',
password => 'Password',
password_max_age => '99999',
before => Group['Cool People'],
groups => 'Cool People',
}
}
让我知道这有什么帮助或你不明白的东西!傀儡有时候可能是野兽!