AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-21370869

Ralf_Reddings's questions

Martin Hope
Ralf_Reddings
Asked: 2025-04-25 21:20:04 +0800 CST

Impedir que a tecla de atalho <modificador> e <tecla> sejam disparadas se a <tecla> já estiver pressionada?

  • 5

Tenho um problema que não consegui resolver de forma elegante. Forneci o código abaixo como um exemplo reproduzível.

Se eu acionar shift+ f23, soltar shift, mas ainda mantendo pressionado f23; se eu pressionar control, control+ f23dispara. Não estou esperando esse comportamento e é indesejado. Não quero que control+ f23dispare se f23já estiver pressionado.

<^f23::
tooltip ctrl and f23 down
KeyWait, f23
tooltip ctrl and f23 up
return

<+f23::
tooltip shift and f23 down
KeyWait, f23
tooltip shift and f23 up
return

Tenho muitas teclas de atalho como as acima ( <^f1... <^f22,, etc etc), então estou procurando uma solução única para todos.

autohotkey
  • 1 respostas
  • 55 Views
Martin Hope
Ralf_Reddings
Asked: 2025-04-22 03:33:57 +0800 CST

'usando:' e outros métodos não funcionam com start-threadJob para carregar objetos na sessão de trabalho

  • 7

executar o seguinte retorna um erro:

$job=Start-ThreadJob -name maya6 -InitializationScript {. $using:profile} -ScriptBlock {ichild}   #this is an alias defined in the profile

erro:

InvalidOperation: A Using variable cannot be retrieved. A Using variable can be used only with Invoke-Command, Start-Job, or InlineScript in the script workflow. When it is used with Invoke-Command, the Using variable is valid only if the script block is invoked on a remote computer.
ichild: The term 'ichild' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Eu também tentei:

$job=start-threadJob {. $args ; ichild} -ArgumentList $profile      #ichild is an alias defined in my profile

e quando eu uso receive-job $jobele congela meu prompt e continuo recebendo o seguinte erro:

Oops, something went wrong.  
Please report this bug with ALL the details below, including both the 'Environment' and 'Exception' sections.  
Please report on GitHub: https://github.com/PowerShell/PSReadLine/issues/new?template=Bug_Report.yaml  
Thank you!  
  
### Environment  
PSReadLine: 2.3.4  
PowerShell: 7.4.6  
OS: Microsoft Windows 10.0.26100  
BufferWidth: 170  
BufferHeight: 21  
  
Last 49 Keys:

Pensei usingque fosse especificamente para esse commandlet...

estou no pwsh7.4

powershell
  • 1 respostas
  • 44 Views
Martin Hope
Ralf_Reddings
Asked: 2025-03-29 08:35:25 +0800 CST

O script ps1 não está funcionando de forma consistente com o agendador de tarefas

  • 6

digamos que eu tenha um myScript.ps1arquivo que em algum momento precisa executar comandos/binários nativos. seu conteúdo é:

set-content -path "c:\temp\test.text" -value "hello world"
. 'C:\temp\myCliTool.exe'

Se eu criar manualmente uma tarefa no agendador de tarefas e definir as guias "ações" para

  • programa/arquivo para"C:\Program Files\PowerShell\7\pwsh.exe"
  • Argumento para-NoProfile -ExecutionPolicy Bypass -command "& {. 'C:\temp\myScript.ps1'}"

O script ps1 roda bem, o test.txtarquivo é criado. Além disso, o comando nativo que ele precisa para executar completamente sua tarefa é executado

Mas se eu executar o mesmo script, novamente via agendador de tarefas, mas na aba "ações", faço uma pequena alteração:

  • programa/arquivo para"C:\Program Files\PowerShell\7\pwsh.exe"
  • Argumento para-NoProfile -ExecutionPolicy Bypass -file 'C:\temp\myScript.ps1'

O script não parece rodar. O test.txtarquivo não é criado. Além disso, o comando nativo não roda.

Esse problema não ocorre se eu tentar executar o pwsh por outros meios, por exemplo, cmd.

Estou pensando que o agendador de tarefas está com defeito aqui. Passei o dia todo consertando seus "recursos", como a variável Path Env não estar disponível em chamadas do agendador de tarefas. Tentar descobrir o problema das -filechamadas pwsh provou ser infrutífero, tentei redirecionar erros potenciais que podem ocorrer no script do PowerShell para um arquivo de texto, mas não consegui descobrir isso completamente.

Estou no pwsh 7.4 e windows 11

powershell
  • 1 respostas
  • 69 Views
Martin Hope
Ralf_Reddings
Asked: 2025-02-09 08:30:52 +0800 CST

como obter uma string de um array mutável?

  • 5

Isso é algo que continua me confundindo. Descobri uma solução alternativa algumas semanas atrás, mas esqueci:

$l=[System.Collections.Generic.List[string[]]]::new()
$l.Add("one", "two", "three")
$l.ToString()                                                  #returns ---> System.String[]
"$l"                                                           #returns ---> System.String[]           
 [string]$l                                                  #returns ---> System.String[]       
 $l -join "`n"                                              #returns ---> System.String[]       

Estou esperando algo como o seguinte ou algo mais, conforme ditado pela $ofsvariável:

one
two
three

Estou no pwsh 7.4

list
  • 2 respostas
  • 38 Views
Martin Hope
Ralf_Reddings
Asked: 2024-12-20 23:17:10 +0800 CST

Lutando para dar valor de parâmetro padrão a um script '.ps1' por meio do dicionário $PSDefaultParameterValues

  • 7

Tenho um .ps1 que tem um -pathparâmetro ao qual gostaria de dar um valor padrão, por meio do $PSDefaultParameterValuesdicionário. Imaginei que isso funcionaria da mesma forma que os cmdlets:

$PSDefaultParameterValues=@{
    "C:\Users\user1\Documents\PowerShell\Scripts\myScript.ps1:path" = "C:\temp\db.jsonc"
}

O código para myScript.ps1ser:

[CmdletBinding()]
param (
    [Parameter(ValueFromPipeline,ValueFromPipelineByPropertyName,mandatory)]
    [string]$Path
)
"path ---> $path"

Então, quando eu digito, .\myScript.ps1recebo o prompt "Fornecer valores para os seguintes parâmetros:", mas se eu executar, .\myScript.ps1 -path c:\some\patha saída épath ---> c:\some\path

Tentei retrabalhar o dicionário, mas o script ainda não recebe um valor para o -pathparâmetro:

$PSDefaultParameterValues=@{
    #"myScript.ps1:path" = "C:\temp\db.jsonc"  
    "myScript.:pfath" = "C:\temp\db.jsonc"     # this does not work either
    #"C:\Users\user1\Documents\PowerShell\Scripts\myScript.ps1:path"    = "C:\temp\db.jsonc"
}
powershell
  • 2 respostas
  • 61 Views
Martin Hope
Ralf_Reddings
Asked: 2024-12-20 02:34:02 +0800 CST

Existe um recurso 'ou' com curingas do PowerShell?

  • 7

Estou tentando descobrir se é possível combinar mkvor mp4com get-childItem. Olhando a página about_wildcards não parece haver menções específicas de "or". Eu tentei de qualquer forma:

get-ChildItem -path 'c:/temp' -File -Filter '[*mkv][*mp4]'
get-ChildItem -path 'c:/temp' -File -Filter '[*mkv][*mp4]?'
get-ChildItem -path 'c:/temp' -File -Filter '[*mkv]?[*mp4]?'

o diretório "temp" tem arquivos mp4 e mkv, então espero que o comando acima os retorne... mas não recebo nada.

Sei que isso é uma questão trivial com algo como -matchou, where-objectmas estou tentando aproveitar os curingas, pois isso significaria que posso fazer tudo em uma chamada.

Estou procurando saber se isso é possível com curingas pwsh. Estou no pwsh 7.4

powershell
  • 1 respostas
  • 52 Views
Martin Hope
Ralf_Reddings
Asked: 2024-12-02 23:10:19 +0800 CST

Existe alguma diferença significativa nessa construção '@()' ou isso é um bug?

  • 7

Tenho uma função cujo nameparâmetro desejo fornecer conclusão de tabulação, os valores de conclusão de tabulação são nomes de arquivos encontrados em c:\temp. Além de usar os arquivos em c:\tempcomo valores, também desejo adicionar valores de conclusão de tabulação adicionais. Abaixo está a função

Function foo{
    Param(
    [ValidateSet([layoutNames], ErrorMessage = """{0}"" Is not a valid Layout name")]
    $Name
    )
    $name
}

e a layoutNamesclasse, que é usada pelo nameparâmetro:

Class layoutNames : System.Management.Automation.IValidateSetValuesGenerator{
    [string[]] GetValidValues(){
        #return @((Get-ChildItem -path 'c:\temp' -File).BaseName, "valueFoo", "valueBar")        #tab completetion only suggests "valueFoo" and "valueBar"
        #return @("valueFoo", "valueBar", (Get-ChildItem -path 'c:\temp' -File).BaseName)        #tab completetion only suggests "valueFoo" and "valueBar"
        return @(                                                                                #tab completetion suggests "valueFoo" and "valueBar" and the file names.
                    "valueFoo", "valueBar"
                    (Get-ChildItem -path 'c:\temp' -File).BaseName
                    )
    }}

Com o acima, apenas o terceiro returnexemplo funciona, a única diferença é uma nova linha... eu acho.

Passei um bom tempo tentando descobrir isso. Inicialmente, comecei com uma instrução return que se parecia com esta:

return [string[]]("valueFoo", "valueBar", (Get-ChildItem -path 'c:\temp' -File).BaseName)

mas continuei mudando, pois nada estava funcionando, até que finalmente consegui usar o operador de matriz @().

O ponto crucial do meu problema é por que a classe, quando declarada da seguinte maneira, não funciona como pretendido com a foofunção, ou seja, sugere ambos valueFoo, valueBare os nomes dos arquivos emc:\temp

Class layoutNames : System.Management.Automation.IValidateSetValuesGenerator{
    [string[]] GetValidValues(){
        #return [string[]]("valueFoo", "valueBar",(Get-ChildItem -path 'C:\Users\INDESK\AppData\Roaming\GPSoftware\Directory Opus\Layouts' -File).BaseName)             # no files names are suggested. only 'valueFoo' and 'valueBar' are suggested
        #return [string[]]("valueFoo", "valueBar",((Get-ChildItem -path 'C:\Users\INDESK\AppData\Roaming\GPSoftware\Directory Opus\Layouts' -File).BaseName))               # no files names are suggested. only 'valueFoo' and 'valueBar' are suggested
        return [string[]](((Get-ChildItem -path 'C:\Users\INDESK\AppData\Roaming\GPSoftware\Directory Opus\Layouts' -File).BaseName),"valueFoo", "valueBar")                # no files names are suggested. only 'valueFoo' and 'valueBar' are suggested
    }}

Estou no pwsh 7.4/win11

arrays
  • 2 respostas
  • 48 Views
Martin Hope
Ralf_Reddings
Asked: 2024-11-13 02:06:29 +0800 CST

como declarar uma classe em um arquivo '.ps1'?

  • 9

Quero fornecer uma lista de nomes permitidos para o nameparâmetro, para que o usuário possa tabinseri-los. Eu criei o seguinte:

Param(
    [ValidateSet([foo])]
    [string]$Name
    )
    $name

Class foo : System.Management.Automation.IValidateSetValuesGenerator{
    [string[]] GetValidValues(){
    return [string[]] ("cat", "dog", "fish")
    }}
    

É sugerido digitar .\myScript.ps1 -name e depois não pressionar tabnada. A execução .\myScript.ps1retorna um erro:

Line |
   3 |      [ValidateSet([foo])]
     |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Unable to find type [foo].

Posso fazer essa configuração exata em um psm1arquivo ou apenas como uma função padrão e funciona. Pensei em mover a classe para o topo do arquivo de script, mas isso não é permitido devido à param()necessidade de ser a primeira linha.

Existe uma maneira de contornar esse problema? Estou no pwsh 7.4

powershell
  • 1 respostas
  • 64 Views
Martin Hope
Ralf_Reddings
Asked: 2024-11-10 08:29:39 +0800 CST

com '[System.Windows.Forms.Clipboard]::ContainsData', como usá-lo para verificar se a área de transferência tem o formato de dados 'html'?

  • 6

Estou tentando descobrir como usar essa classe. Acho que sei como fazê-la funcionar quando quero verificar se a área de transferência tem um textformato. Com o texto copiado, o seguinte retorna true:

[System.Windows.Forms.Clipboard]::ContainsData('text')

Mas se eu copiar um artigo com links de um artigo ou de uma página da web, o seguinte retorna false:

[System.Windows.Forms.Clipboard]::ContainsData('html')

Tenho certeza de que tenho o formato HTML na minha área de transferência, pois posso colá-lo em um software que me permite fazer isso, como o Obsidian.

Estou fazendo isso porque quero obter o conteúdo das minhas áreas de transferência em formato html. Tentei o seguinte:

[System.Windows.Forms.Clipboard]::GetData('text')

e retorna um objeto:

CanRead      : True
CanSeek      : True
CanWrite     : True
Capacity     : 2354
Length       : 2354
Position     : 0
CanTimeout   : False
ReadTimeout  :
WriteTimeout :

mas fazer a mesma coisa não [System.Windows.Forms.Clipboard]::GetData('html')retorna nada, novamente tenho certeza de que tenho conteúdo HTML na minha área de transferência.

Preciso fazer isso porque simplesmente preciso obter o conteúdo HTML da minha área de transferência como uma string, para processamento posterior no PowerShell. Estou no pwsh 7.4

powershell
  • 1 respostas
  • 35 Views
Martin Hope
Ralf_Reddings
Asked: 2024-10-08 01:36:16 +0800 CST

Como obter um parâmetro para minha função completar automaticamente nomes de comandos como 'Get-Command'?

  • 7

Estou escrevendo uma função que fornecerá ajuda para os vários comandos/funções que tenho. Sei que o PowerShell já faz um grande esforço com ajuda em "tempo real", só preciso de uma ou duas funções nesse sentido para meus propósitos de nicho.

Get-Commandposso de alguma forma sugerir comandos/funções que fazem parte da sessão, bem como aqueles "descarregados", gostaria que o parâmetro 'Nome' da minha função também fizesse isso, mas estou perdido aqui, procurei e não encontrei nada útil.

O que tenho em mente é algo como o seguinte, onde pressionar tabo parâmetro 'Nome' sugere nomes de comandos:

Function Get-Help{
    Param(
    $Name 
    )

    #Do something with the provided command/function name
}

PWSH 7.4

powershell
  • 1 respostas
  • 33 Views
Martin Hope
Ralf_Reddings
Asked: 2024-10-06 04:09:32 +0800 CST

Como adicionar valores adicionais a 'ValidateSet' ao usar uma classe para obter uma lista dinamicamente?

  • 6

Tenho uma função, quero fornecer dinamicamente valores para o parâmetro Name usando uma lista de nomes de arquivo encontrados em c:\names, para que tabsempre forneça nomes que sejam UpToDate. Descobri como fazer isso com uma classe, mas quero fazer um tratamento "inteligente" também. Se o usuário fornecer *ou ?como um valor, isso também deve ser aceitável. Quero usar essencialmente esses caracteres como "modificadores" para o parâmetro.

O que eu tenho é o seguinte:

Function fooo{
    Param(
    [ValidateSet([validNames], "*", ErrorMessage = """{0}"" Is not a valid name")]
    #[ValidateSet([validNames], ErrorMessage = """{0}"" Is not a valid name")]           #'tab' works as expected here
    [string]$Name
    )
    if ($name -eq "*"){"Modifier Used, do something special insead of the usual thing"}
    $name
}

Class validNames : System.Management.Automation.IValidateSetValuesGenerator{
    [string[]] GetValidValues(){
        return [string[]] (Get-ChildItem -path 'C:\names' -File).BaseName
    }}

Com o acima tabnão completa automaticamente nenhum valor para o parâmetro Nome, e às vezes até recebo um erro:

MetadataError: The variable cannot be validated because the value cleanup4 is not a valid value for the Name variable.

Posso fornecer o valor *para Nome sem problemas, mas não recebo nenhum erro:

fooo -name *

#Modifier Used, do something special insead of the usual thing

Eu sei que posso usar apenas um parâmetro switch aqui, em vez de seguir esse caminho, minha principal preocupação é como adicionar valores adicionais em cima dos valores fornecidos pela ValidNamesclasse? Algo como:

...
[ValidateSet([validNames], "foo", "bar", "baz", ErrorMessage = """{0}"" Is not a valid name")]
...

Estou no PWS 7.4

powershell
  • 1 respostas
  • 50 Views
Martin Hope
Ralf_Reddings
Asked: 2023-09-22 01:31:36 +0800 CST

G33kDude cJson - Depois de carregar a string Json no AHK, como acessar uma chave via notação AHK?

  • 6

Tenho o seguinte jsonarquivo e quero transformá-lo em um objeto AHK:

{
    "folders": [
        {
            "path": "."
        }
    ],
    "settings": {
            "files.exclude": {
            "**/.git": true,
            "**/.svn": true,
            "**/.hg": true,
            "**/CVS": true,
            "**/.DS_Store": true,
            "**/Thumbs.db": true,
            "**.lnk":true,
            "*.code-workspace" :true,
            "**.vscode/":true,
            "**.url":true
        },
        "terminal.integrated.fontSize": 12,
    }
}

Eu só me importo com a chave terminal.integrated.fontSizee seu valor 12. Quero incrementá-lo/diminuí-lo e salvá-lo substituindo o arquivo.

Eu tentei o seguinte, não consigo obter o valor terminal.integrated.fontSize, o depurador mostra, Object {["files.exclude"]: Object, ["terminal.integrated.fontSize"]: 12}mas OutPutDebugsimplesmente não imprime nada:

path    := "C:\temp\Rest APIs.code-workspace"
Obj     := Json.Load(FileOpen(Path,"r").Read())
OutputDebug, % Obj.settings
OutputDebug, % Obj.settings[1]
OutputDebug, % Obj.settings[2]

Se você quiser saber o que estou fazendo, explico aqui, Como aumentar o valor de uma configuração em 'Settings.json' com uma tecla de atalho?

Qualquer ajuda seria muito apreciada!

autohotkey
  • 1 respostas
  • 18 Views
Martin Hope
Ralf_Reddings
Asked: 2023-09-18 02:58:01 +0800 CST

Select-String RegEx como selecionar apenas '}' neste exemplo

  • 6

Digamos que eu tenha uma string assim:

foo
}
bar}
    }
{baz}

e quero apenas corresponder as chaves de fechamento que estão no início de uma linha ou são precedidas por um espaço em branco, como um ou mais tabcaracteres.

Portanto, com o exemplo acima, apenas as chaves nas linhas 2 e 4 devem ser selecionadas (contando a partir de 1)

Esta primeira tentativa parece apenas destacar, a chave de fechamento na linha 2, a chave na linha 4 não está selecionada:

"foo
}
bar}
    }
{baz}" |Select-String "\n\s?\}" -AllMatches

Tentei tornar o token de espaço em branco opcional com ?, mas a chave na linha 2 foi desmarcada:

"foo
}
bar}
    }
{baz}" |Select-String "\n\s+?\}" -AllMatches

hmm...Tenho certeza de que já teria conseguido -replaceou -matchagora, mas realmente preciso pegar o jeito Select-String.

powershell
  • 1 respostas
  • 28 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve