1
サーバからVLCをインストールするスクリプトがあります。スクリプトを実行すると、テキストファイル内のすべてのコンピュータ名がインストールプロセスを開始し、「次の次へ」(基本的に)を押します。VLCをインストールすると自動的にインストールされます。
私は、これらのスクリプトをインストールし、それらのすべての "次へ"のプロンプトを表示せずに、単独でインストールするためにこれらのスクリプトをどのように書くことができるのか不思議でした。これは可能ですか?
# Run As Administrator
Function Get-FileName{
[CmdletBinding()]
Param(
[String]$Filter = "|*.*",
[String]$InitialDirectory = "C:\")
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $InitialDirectory
$OpenFileDialog.filter = $Filter
[void]$OpenFileDialog.ShowDialog()
$OpenFileDialog.filename
}
$file = Get-FileName -InitialDirectory $env:USERPROFILE\Desktop -Filter "Text files (*.txt)|*.txt|All files (*.*)|*.*"
ForEach ($item in (Get-Content $file)) {
$sitem = $item.Split("|")
$computer = $sitem[0].Trim()
$user = $sitem[1].Trim()
$filepath = Test-Path -Path "\\$computer\c$\Program Files (x86)\VideoLAN\VLC\"
If ($filepath -eq $false) {
Get-Service remoteregistry -ComputerName $computer | Start-Service
Copy-Item -Path "\\server\Unsupported Software\VLC MediaPlayer" -Destination "\\$computer\c$\windows\temp\" -Container -Recurse -Force
$InstallString = '"C:\windows\temp\VLC MediaPlayer\vlc-2.2.1-win32.exe"'
([WMICLASS]"\\$computer\ROOT\CIMV2:Win32_Process").Create($InstallString)
"$computer" + "-" + "$(Get-Date)" | Out-File -FilePath "\\server\Unsupported Software\VLC MediaPlayer\RemoteInstallfile.txt" -Append
} Else {
"$computer" + "_Already_Had_Software_" + "$(Get-Date)" | Out-File -FilePath "\\server\Unsupported Software\VLC MediaPlayer\RemoteInstallfile.txt" -Append
}
}
したがって、すべてのアプリケーションは異なるでしょうか?それとも、これはほとんどのアプリケーションをカバーしていますか? –
また、私のスクリプトのどこにこれを追加するのか知っていますか? –
もちろん、これはアプリケーションごとに異なる場合がありますが、ほとんどのアプリケーションはそのようなサイレントインストールを提供します。ただし、各アプリケーションのコマンドラインインストール構文を確認する必要があります。 '$ InstallString'変数にこれを追加する必要があるかもしれません –