如何编写 powershell 脚本以在 Windows 上设置开发人员环境?
How do I write a powershell script to setup a developer environment on Windows?
堆栈溢出,
我正在使用 PowerShell 脚本为我的团队设置开发人员环境。我想要它,以便用户可以单击快捷方式并为他们下载和安装必要的开发人员工具。这些安装应该是全局的并且在 PATH 上。我已经有了调用脚本工作的快捷方式。脚本本身就是我遇到的问题。
我正在使用 chocolatey 尝试在开发人员的机器上安装节点。
这是我到目前为止编写的代码
devEnv.ps1
echo "Installing Chocolatey package manager, check version with choco"
$env: ChocolateyInstall="$Home/chocolatey"
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
echo "Chocolatey installed. Installing NodeJS and NPM via Chocolatey."
Start-Process powershell.exe -argument "-NoExit -Command ./nodejs.ps1"
echo "Installation complete."
Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
我可以成功安装 chocolatey,但是我无法安装 node。我创建了另一个我在 devEnv.ps1
的第 5 行调用的脚本
我希望新的 PowerShell 实例可以访问 choco 命令。它不是。下面我包含了第二个脚本。
nodejs.ps1
Invoke-Expression -Command "choco install nodejs.install"
返回错误
choco : The term 'choco' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ choco install nodejs.install
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (choco:String) [],
CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
所以我浏览了你的脚本并运行发现了一些改进的余地:
$Env:ChocolateyInstall = "$HOME\chocolatey"
$chocoInstall = New-TemporaryFile
'Installing chocolatey package manager.'
'Check version with `choco.exe --version`.'
[Net.WebClient]::new().DownloadString(
'https://chocolatey.org/install.ps1'
) | Out-File -FilePath $chocoInstall.FullName -Encoding UTF8
. $chocoInstall.FullName
'Chocolatey installed. Installing NodeJS and NPM via Chocolatey.'
& "$Env:ProgramData\chocolatey\choco.exe" install nodejs --yes --force
'Installation complete.'
'Press any key to continue...'
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
这将通过对可执行文件调用的完整路径来解决 choco.exe
在 PATH
环境变量中找不到的问题。此外,它将解决 npm
可能已经安装并自动确认软件包的情况。
您可能需要查看 Boxstarter 以了解此用例。 Boxstarter 将处理某些工具所需的重新启动,并具有用于配置工作环境的附加选项(例如配置资源管理器选项)。它还处理这种特殊情况,即安装后 choco.exe 未找到(因为 PATH 已更新但 Windows 尚未使用更改更新当前会话)。
找到它
堆栈溢出,
我正在使用 PowerShell 脚本为我的团队设置开发人员环境。我想要它,以便用户可以单击快捷方式并为他们下载和安装必要的开发人员工具。这些安装应该是全局的并且在 PATH 上。我已经有了调用脚本工作的快捷方式。脚本本身就是我遇到的问题。
我正在使用 chocolatey 尝试在开发人员的机器上安装节点。
这是我到目前为止编写的代码
devEnv.ps1
echo "Installing Chocolatey package manager, check version with choco"
$env: ChocolateyInstall="$Home/chocolatey"
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
echo "Chocolatey installed. Installing NodeJS and NPM via Chocolatey."
Start-Process powershell.exe -argument "-NoExit -Command ./nodejs.ps1"
echo "Installation complete."
Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
我可以成功安装 chocolatey,但是我无法安装 node。我创建了另一个我在 devEnv.ps1
的第 5 行调用的脚本我希望新的 PowerShell 实例可以访问 choco 命令。它不是。下面我包含了第二个脚本。
nodejs.ps1
Invoke-Expression -Command "choco install nodejs.install"
返回错误
choco : The term 'choco' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ choco install nodejs.install
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (choco:String) [],
CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
所以我浏览了你的脚本并运行发现了一些改进的余地:
$Env:ChocolateyInstall = "$HOME\chocolatey"
$chocoInstall = New-TemporaryFile
'Installing chocolatey package manager.'
'Check version with `choco.exe --version`.'
[Net.WebClient]::new().DownloadString(
'https://chocolatey.org/install.ps1'
) | Out-File -FilePath $chocoInstall.FullName -Encoding UTF8
. $chocoInstall.FullName
'Chocolatey installed. Installing NodeJS and NPM via Chocolatey.'
& "$Env:ProgramData\chocolatey\choco.exe" install nodejs --yes --force
'Installation complete.'
'Press any key to continue...'
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
这将通过对可执行文件调用的完整路径来解决 choco.exe
在 PATH
环境变量中找不到的问题。此外,它将解决 npm
可能已经安装并自动确认软件包的情况。
您可能需要查看 Boxstarter 以了解此用例。 Boxstarter 将处理某些工具所需的重新启动,并具有用于配置工作环境的附加选项(例如配置资源管理器选项)。它还处理这种特殊情况,即安装后 choco.exe 未找到(因为 PATH 已更新但 Windows 尚未使用更改更新当前会话)。
找到它