SysToolsLib icon indicating copy to clipboard operation
SysToolsLib copied to clipboard

[PSService] Single -setup parameter not working for powershell v2

Open cloverhap opened this issue 6 years ago • 3 comments

I was testing the (mostly) unmodified service script on a machine with powershell v2 installed as we have some in our environment, and came across this message:

Parameter set cannog be resolved using the specified named parameters. At line:1 char:32

  • services\PSService.ps1 <<<< -setup
    • CategoryInfo : InvalidArgument: (:) [PSService.ps1], P arameterBindingException
    • FullyQualifiedErrorId : AmbiguousParameterSet,PSService.ps1

I removed line 233 (below) to make it work since I won't be using the 'Setup' parameter set, but i'm wondering if this is happening on other users as well?

[Parameter(ParameterSetName='Setup', Mandatory=$true)] <<< [Parameter(ParameterSetName='Setup2', Mandatory=$true)] [Switch]$Setup, # Install the service

cloverhap avatar Mar 14 '19 16:03 cloverhap

Hello @cloverhap. I had the same issue and commenting the line 233 resolved it. Thanks

cbm-afettach avatar May 15 '20 14:05 cbm-afettach

Hello,

What exact OS and PS versions do you have? Because on the only system I have with PS v2, a Windows 2008 R2 server, it works just fine:

PS C:\Users\Administrator> $psversiontable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.8806
BuildVersion                   6.1.7601.17514
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1


PS C:\Users\Administrator> psservice.ps1 -?

NAME
C:\Tools\PSService.ps1

SYNOPSIS
A sample Windows service, in a standalone PowerShell script.


SYNTAX
C:\Tools\PSService.ps1 [-Status] [<CommonParameters>]

C:\Tools\PSService.ps1 -Start [<CommonParameters>]

C:\Tools\PSService.ps1 -Stop [<CommonParameters>]

C:\Tools\PSService.ps1 -Restart [<CommonParameters>]

C:\Tools\PSService.ps1 -Setup [-Credential <PSCredential>] [<CommonParameters>]

C:\Tools\PSService.ps1 -Setup -UserName <String> [-Password <String>] [<CommonParameters>]

C:\Tools\PSService.ps1 -Remove [<CommonParameters>]

C:\Tools\PSService.ps1 -Service [<CommonParameters>]

C:\Tools\PSService.ps1 -SCMStart [<CommonParameters>]

C:\Tools\PSService.ps1 -SCMStop [<CommonParameters>]

C:\Tools\PSService.ps1 -Control <String> [<CommonParameters>]

C:\Tools\PSService.ps1 -Version [<CommonParameters>]


DESCRIPTION
This script demonstrates how to write a Windows service in pure PowerShell.
It dynamically generates a small PSService.exe wrapper, that in turn
invokes this PowerShell script again for its start and stop events.


RELATED LINKS

REMARKS
To see the examples, type: "get-help C:\Tools\PSService.ps1 -examples".
For more information, type: "get-help C:\Tools\PSService.ps1 -detailed".
For technical information, type: "get-help C:\Tools\PSService.ps1 -full".



PS C:\Users\Administrator>

JFLarvoire avatar May 25 '20 15:05 JFLarvoire

Actually there's a simple workaround. Run: PSService.ps1 -Setup -UserName LocalSystem This satisfies PowerShell 2, and does not change the User Name as LocalSystem is the default user name that would be used anyway.

JFLarvoire avatar Jun 14 '24 13:06 JFLarvoire