115

この実行可能ファイルのPowerShellを使用してショートカットを作成したいと思います。

C:\Program Files (x86)\ColorPix\ColorPix.exe

これはどのように行うことができますか?

4

2 に答える 2

170

PowerShellのネイティブコマンドレットはわかりませんが、代わりにcomオブジェクトを使用できます。

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()

$pwdにset-shortcut.ps1として保存するPowerShellスクリプトを作成できます

param ( [string]$SourceExe, [string]$DestinationPath )

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()

このように呼んでください

Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"

ターゲットexeに引数を渡したい場合は、次の方法で実行できます。

#Set the additional parameters for the shortcut  
$Shortcut.Arguments = "/argument=value"  

$ Shortcut.Save()の前。

便宜上、set-shortcut.ps1の修正バージョンを次に示します。2番目のパラメーターとして引数を受け入れます。

param ( [string]$SourceExe, [string]$ArgumentsToSourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()
于 2012-03-14T12:23:29.500 に答える
53

PowerShell 5.0New-Item以降Remove-ItemGet-ChildItemシンボリックリンクの作成と管理をサポートするように拡張されました。のItemTypeパラメータNew-Itemは、新しい値SymbolicLinkを受け入れます。New-Itemコマンドレットを実行することにより、1行でシンボリックリンクを作成できるようになりました。

New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"

シンボリックリンクはショートカットとは異なり、ショートカットは単なるファイルであることに注意してください。それらにはサイズがあり(小さいもので、ポイントする場所を参照するだけです)、使用するには、そのファイルタイプをサポートするアプリケーションが必要です。シンボリックリンクはファイルシステムレベルであり、すべてがそれを元のファイルと見なします。アプリケーションは、シンボリックリンクを使用するために特別なサポートを必要としません。

とにかく、 Powershellを使用して管理者として実行ショートカットを作成する場合は、次を使用できます。

$file="c:\temp\calc.lnk"
$bytes = [System.IO.File]::ReadAllBytes($file)
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON (Use –bor to set RunAsAdministrator option and –bxor to unset)
[System.IO.File]::WriteAllBytes($file, $bytes)

.LNKファイル内の何かを変更したい場合は、Microsoftの公式ドキュメントを参照してください。

于 2015-03-12T05:45:10.687 に答える