function - tag - yoast seo snippet variables
Crear una funciĆ³n con variables de llamada opcionales. (3)
No creo que su pregunta sea muy clara, este código asume que si va a incluir el parámetro -domain, siempre será ''nombrado'' (es decir, nombre de dominio del dominio arg2 -domain); Esto también hace que el parámetro de nombre de computadora sea obligatorio.
Function DoStuff(){
param(
[Parameter(Mandatory=$true)][string]$computername,
[Parameter(Mandatory=$false)][string]$arg2,
[Parameter(Mandatory=$false)][string]$domain
)
if(!($domain)){
$domain = ''domain1''
}
write-host $domain
if($arg2){
write-host "arg2 present... executing script block"
}
else{
write-host "arg2 missing... exiting or whatever"
}
}
¿Hay alguna forma de crear un parámetro en una función de PowerShell a la que tenga que llamar para tenerlo en cuenta?
Un ejemplo dado por commandlet (el negrita es lo que quiero hacer):
Invoke-Command
Server01
-Scriptblock
{...}
Aquí hay un ejemplo de lo que quiero hacer con la función
Function DoStuff($computername, -arg2, -domain $domain)
Test-parameter(-domain) if (-domain -eq $true) {
use $domain
}
Else {
$domain = "Domain1"
}
test-parameter($arg2) {
if ($arg2 -eq $true) {
Do something
}
else {
Do the opposite
}
}
Así que en resumen:
Si "-arg2" está presente, quiero que suceda algo en el script. Si "-Domain" está presente y tiene un argumento con él, quiero que se use en lugar del argumento set.
No estoy seguro de entender la pregunta correctamente.
De lo que he recopilado, ¿desea poder asignar un valor a Dominio si es nulo y también qué comprobar si se proporciona $ args2 y, de acuerdo con el valor, ejecutar un código determinado?
Cambié el código para volver a armar las suposiciones hechas anteriormente.
Function DoStuff($computername, $arg2, $domain)
{
if($domain -ne $null)
{
$domain = "Domain1"
}
if($arg2 -eq $null)
{
}
else
{
}
}
DoStuff -computername "Test" -arg2 "" -domain "Domain2"
DoStuff -computername "Test" -arg2 "Test" -domain ""
DoStuff -computername "Test" -domain "Domain2"
DoStuff -computername "Test" -arg2 "Domain2"
¿Eso ayudó?
Powershell proporciona una gran cantidad de soporte integrado para escenarios de parámetros comunes, incluidos los parámetros obligatorios, los parámetros opcionales, los parámetros "switch" (también conocido como marca) y los "conjuntos de parámetros".
Por defecto, todos los parámetros son opcionales. El enfoque más básico es simplemente verificar cada uno por $null
, luego implementar la lógica que desee desde allí. Esto es básicamente lo que ya ha mostrado en su código de muestra.
Si desea conocer todo el soporte especial que Powershell puede brindarle, consulte estos enlaces: