팀에 PowerShell 스크립트를 배포하고 있습니다. 이 스크립트는 Vsphere 클라이언트에서 IP 주소를 가져오고 mstsc 연결을 만들고 공유 파일에 기록하는 것입니다.
그들이 스크립트를 사용하는 순간 그들은 기계의 IP 주소를 알게되었습니다. 그 후에는 항상 PowerShell 스크립트를 실행하는 대신 mstsc를 직접 사용하는 경향이 있습니다. (mstsc를 사용하고 있으므로 VM을 자주 사용하는지 여부를 알 수 없습니다.)
주로 그들은 PowerShell을 실행하는 것이 간단하지 않다고 말합니다.
나는 그들의 게으름으로 아프다.
.ps1 파일을 두 번 클릭하여 PowerShell 스크립트를 작동시키는 방법이 있습니까?
답변
“Target”과 같은 단축키를 작성하십시오.
powershell.exe -command "& 'C:\A path with spaces\MyScript.ps1' -MyArguments blah"
답변
또는 모든 PS1 파일이 VBS 파일과 같은 방식으로 작동하게하려면 다음과 같이 레지스트리를 편집 할 수 있습니다.
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\command
기본값을 다음과 같이 편집하십시오.
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -noLogo -ExecutionPolicy unrestricted -file "%1"
그런 다음 원하는대로 모든 .PS1 파일을 두 번 클릭하면됩니다. 나의 겸손한 견해로는 상자에서 나올 수 있습니다.
이것을 “Powershell De-castration Hack”이라고하겠습니다. LOL 즐기세요!
답변
PowerShell의 보안 기능 중 하나는 사용자가 더블 클릭으로 스크립트를 시작할 수 없다는 것입니다. 이 설정을 수정하는 경우 각별히주의하십시오. 대안은 스크립트를 패키지하는 것입니다. PrimalScript와 같은 일부 편집자는 그렇게 할 수 있습니다. 사용자는 여전히 PowerShell을 설치해야하지만 exe를 두 번 클릭 할 수 있습니다. 팀에 약간의 교육이 필요한 것 같습니다.
답변
이것은 Windows 10 및 powershell 5.1에서 나를 위해 일했습니다.
- .ps1 파일을 마우스 오른쪽 버튼으로 클릭하십시오
- 로 열기 …
- 다른 앱을 선택하십시오
- powershell.exe의 위치를 주소 표시 줄에 복사합니다 (기본적으로 Windows 폴더는 표시되지 않음). C : \ Windows \ System32 \ WindowsPowerShell \ v1.0
- powershell.exe를 선택하십시오
- “항상이 앱을 사용하여 .ps1 파일 열기”를 선택하십시오.
- 확인을 클릭하십시오
답변
나는 몇 년 전에 이것을 썼습니다 (관리자 권한으로 실행하십시오).
<#
.SYNOPSIS
Change the registry key in order that double-clicking on a file with .PS1 extension
start its execution with PowerShell.
.DESCRIPTION
This operation bring (partly) .PS1 files to the level of .VBS as far as execution
through Explorer.exe is concern.
This operation is not advised by Microsoft.
.NOTES
File Name : ModifyExplorer.ps1
Author : J.P. Blanc - jean-paul_blanc@silogix-fr.com
Prerequisite: PowerShell V2 on Vista and later versions.
Copyright 2010 - Jean Paul Blanc/Silogix
.LINK
Script posted on:
http://www.silogix.fr
.EXAMPLE
PS C:\silogix> Set-PowAsDefault -On
Call Powershell for .PS1 files.
Done!
.EXAMPLE
PS C:\silogix> Set-PowAsDefault
Tries to go back
Done!
#>
function Set-PowAsDefault
{
[CmdletBinding()]
Param
(
[Parameter(mandatory=$false, ValueFromPipeline=$false)]
[Alias("Active")]
[switch]
[bool]$On
)
begin
{
if ($On.IsPresent)
{
Write-Host "Call PowerShell for .PS1 files."
}
else
{
Write-Host "Try to go back."
}
}
Process
{
# Text Menu
[string]$TexteMenu = "Go inside PowerShell"
# Text of the program to create
[string] $TexteCommande = "%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe -Command ""&'%1'"""
# Key to create
[String] $clefAModifier = "HKLM:\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\Open\Command"
try
{
$oldCmdKey = $null
$oldCmdKey = Get-Item $clefAModifier -ErrorAction SilentlyContinue
$oldCmdValue = $oldCmdKey.getvalue("")
if ($oldCmdValue -ne $null)
{
if ($On.IsPresent)
{
$slxOldValue = $null
$slxOldValue = Get-ItemProperty $clefAModifier -Name "slxOldValue" -ErrorAction SilentlyContinue
if ($slxOldValue -eq $null)
{
New-ItemProperty $clefAModifier -Name "slxOldValue" -Value $oldCmdValue -PropertyType "String" | Out-Null
New-ItemProperty $clefAModifier -Name "(default)" -Value $TexteCommande -PropertyType "ExpandString" | Out-Null
Write-Host "Done !"
}
else
{
Write-Host "Already done!"
}
}
else
{
$slxOldValue = $null
$slxOldValue = Get-ItemProperty $clefAModifier -Name "slxOldValue" -ErrorAction SilentlyContinue
if ($slxOldValue -ne $null)
{
New-ItemProperty $clefAModifier -Name "(default)" -Value $slxOldValue."slxOldValue" -PropertyType "String" | Out-Null
Remove-ItemProperty $clefAModifier -Name "slxOldValue"
Write-Host "Done!"
}
else
{
Write-Host "No former value!"
}
}
}
}
catch
{
$_.exception.message
}
}
end {}
}
답변
레지스트리를 조정해야합니다. 먼저 HKEY_CLASSES_ROOT에 대한 PSDrive를 구성하십시오. 기본적으로 설정되어 있지 않기 때문입니다. 이에 대한 명령은 다음과 같습니다.
New-PSDrive HKCR Registry HKEY_CLASSES_ROOT
이제 일반 HKCU 및 HKLM PSDrive에서와 마찬가지로 HKEY_CLASSES_ROOT에서 레지스트리 키와 값을 탐색하고 편집 할 수 있습니다.
PowerShell 스크립트를 직접 시작하도록 두 번 클릭을 구성하려면
Set-ItemProperty HKCR:\Microsoft.PowerShellScript.1\Shell '(Default)' 0
PowerShell ISE에서 PowerShell 스크립트를 열도록 두 번 클릭을 구성하려면
Set-ItemProperty HKCR:\Microsoft.PowerShellScript.1\Shell '(Default)' 'Edit'
기본값을 복원하려면 (두 번 클릭하여 메모장에서 PowerShell 스크립트를 열도록 설정) :
Set-ItemProperty HKCR:\Microsoft.PowerShellScript.1\Shell '(Default)' 'Open'
답변
시스템 설정을 설정하는 것이 약간 많지만 하드 코딩 된 경로가 필요한 바로 가기는 이상적이지 않습니다. 박쥐 파일은 실제로 문제를 잘 해결합니다.
RunMyPowershellScript.bat
start powershell -command "& '.\MyPowershellScript.ps1' -MyArguments blah"
이 배치 파일을 두 번 클릭하면 배치 파일에 대한 바로 가기를 쉽게 만들 수 있으며 스크립트를 모든 폴더에 배포 할 수 있습니다.