Como aceito o texto de conclusão no terminal do PowerShell? Pressionar a Tabtecla não funciona.
Neste caso, pressionando a Tabtecla, obtive o seguinte:
No PowerShell >= 5.1
Eu entendo:
PS C:\> get-service -Status Running
Get-Service: A parameter cannot be found that matches parameter name 'Status'
Mas a propriedade existe mesmo assim?
PS C:\> get-service | Get-Member
O instalador do PowerShell está me dando o código de erro 2203 no Windows 10. Minhas permissões estão configuradas corretamente. O que mais pode estar causando esse erro?
Se você fizer qualquer modificação nas regras do firewall do GPO Windows com o módulo Powershell NetSecurity usando o comando eg New-NetFirewallRule
ou Set-NetFirewallRule
as alterações não serão aplicadas imediatamente. Só consegui fazer isso fazendo alguma alteração na GUI do MMC depois (o que parece recarregá-la) ou reiniciando o computador.
Pode ser possível usar a API FwPolicy2 do Firewall do Windows ou a ferramenta cmdline legada, netsh
mas eu preferiria fazer isso com o módulo NetSecurity, se possível?
Tenho o seguinte código e espero que meu miniprograma exiba o valor número um, pare o serviço e então exiba o valor número dois.
Verifiquei a documentação aqui e ela confirma que o próximo comando deve ser executado após o verdadeiro/falso da instrução IF ter sido executado.
https://www.pdq.com/blog/how-to-use-if-statements-in-powershell/
$AccServiceName = 'AccountLoaderService'
$AccService = Get-service $AccServiceName
if ($AccService.Status -eq 'Running')
{
Write-Host '1'
Stop-Service $AccServiceName
}
Start-Sleep -Seconds 20
if ($AccService.Status -eq 'Stopped')
{
Write-Host '2'
}
O que realmente acontece é que ele exibe o número um, mas nunca o número 2.
O serviço definitivamente para dentro dos 20 segundos especificados e se eu executar o comando novamente logo em seguida, sem a instrução sleep incluída, ele retorna o valor número 2.
Espero que faça sentido. Qualquer ajuda será muito apreciada.
Não conseguimos enviar um e-mail para um endereço de e-mail externo específico porque o guestmailuser existe duas vezes em nosso centro de administração do Exchange > contatos.
O usuário não existe no Entra (foi excluído pelo suporte da MSFT) e não pode ser pesquisado no Centro de administração do 365.
Tentei remover o usuário usando vários comandos do PowerShell, mas ele reclama sobre "Dual-Write, uma chamada do Azure AD foi feita para manter o objeto sincronizado entre o Azure AD e o Exchange Online) (este ambiente sincroniza com o AD local com o Entra ID Sync). Gostaria de observar também que não consigo encontrar esse usuário no AD local.
Como mencionado, temos um tíquete com a MSFT, mas depois de 2 semanas de "estamos escalando", recorri aos fóruns.
Qualquer ajuda é bem-vinda.
Posso baixar um único arquivo HTML independente com:
wget https://www.bbc.co.uk/news/articles/c99rgj0xkryo
mas wget salvará o arquivo como index.html
em vez de Nation falls silent as King leads Remembrance ceremony.html
. Como faço para que wget use o título da página?
Neste caso, não estou preocupado em quebrar links para os arquivos offline. Estou preocupado apenas em baixar páginas autônomas.
Estou em:
Tentou remover :$DATA
o Stream de um arquivo no cmd e nada funciona, exceto o powershell . Não é mais possível remover usando apenas cmd / batch ?
Recriando/reproduzindo o cenário e mostrando as tentativas frustradas...
:Stream
no arquivo:>"C:\Path\To\LogError.Log::Stream.Report" (echo/[CopyStatus]&echo/Error=3)
:Stream
arquivo:more < "C:\Path\To\LogError.Log:Stream.Report"
:: output:
[CopyStatus]
Error=3
:Stream
no arquivo:dir /r "C:\Path\To\LogError.Log:Stream.Report" | find "$DATA"
:: Output:
25 LogError.Log:Stream.Report:$DATA
:Stream.Report
( :$DATA
) do arquivo por várias tentativas:cd.>"C:\Path\To\LogError.Log:Stream.Report"
cd.>"\\?\C:\Path\To\LogError.Log:StreamReport'"
echo.>"C:\Path\To\LogError.Log:Stream.Report"
echo.>"\\?\C:\Path\To\LogError.Log:Stream.Report"
more < nul > "C:\Path\To\LogError.Log:Stream.Report"
more < nul > "\\?\C:\Path\To\LogError.Log:Stream.Report"
fsutil reparsepoint delete "C:\Path\To\LogError.Log:Stream.Report"
fsutil reparsepoint delete "C:\Path\To\LogError.Log:Stream.Report"
wmic datafile where "name='C:\\Path\\To\\LogError.Log'" delete "Stream.Report"
wmic datafile where "name='C:\\Path\\To\\LogError.Log:Stream.Report'" delete "Stream.Report"
:Stream
no arquivo para verificar se eles foram removidos:dir /r "C:\Path\To\LogError.Log:Stream.Report" | find "$DATA"
:: output
25 LogError.Log:Stream.Report:$DATA
more < "C:\Path\To\LogError.Log:Stream.Report"
:: Output:
[CopyStatus]
Error=3
$DATA
permanece no arquivo.O que estou tentando fazer e estou preso.
Eu removi com sucesso o conteúdo do :Stream:
mas não excluí o $DATA
fluxo do arquivo; ele ainda está presente:
>dir /r LogError.Log
Directory of C:\Path\To
10/22/2024 05:24 AM 17,083 LogError.Log
25 LogError.Log:Stream.Report:$DATA
1 File(s) 17,083 bytes
0 Dir(s) 128,989,868,032 bytes free
Não há dificuldade e funciona diretamente com o powershell
Remove-Item -Path "C:\Path\To\LogError.Log:Stream.Report"
Get-Content -Path "C:\Path\To\LogError.Log:Stream.Report"
Existe alguma maneira de remover :$DATA
usando pure powershell e batch ? Estou procurando uma solução que me permita lidar com isso em ambos os ambientes, mas me encontro enfrentando limitações com cada ferramenta. Como posso obter a mesma funcionalidade em ambas as plataformas?
cmd.exe /c '(echo/[CopyStatus]&echo/Error=3)>"C:\Path\To\LogError.Log:Stream.Report"'
:: Not work:
[System.IO.File]::WriteAllText("C:\Path\To\LogError.Log:Stream.Report", "[CopyStatus]")
[System.IO.File]::WriteAllText("C:\Path\To\LogError.Log:Stream.Report", "[Error=3]" )
"[CopyStatus]" | Out-File -FilePath "C:\Path\To\LogError.Log:Stream.Report" -Encoding utf8
"[Error=3]" | Out-File -FilePath "C:\Path\To\LogError.Log:Stream.Report" -Encoding utf8
Mas no cmd , não consigo excluir, e no powershell , não consigo escrever. Parece que estou preso no meio: o PowerShell pode executar duas ações (ler e excluir), enquanto o cmd também pode executar duas ações (escrever e ler).
Por que não posso ter todas as três ações no powershell e todas as três ações no cmd ? Existe uma maneira de conseguir isso?"
Pergunta: | Para: |
---|---|
1. Remover: File.Log: $DATA | cmd / morcego |
2. Escreva: File.Log: Stream:$DATA | powershell |
Minha tarefa é substituir alguns caracteres nos nomes dos arquivos em cerca de 10.000 arquivos que possuo, incluindo subpastas.
Então, no meu exemplo, quero alterar o caractere # para hash.
A localização do meu arquivo é "C:\Users\JHB Laptop\Documents" com o arquivo principal chamado test "C:\Users\JHB Laptop\Documents\test".
As subpastas são "C:\Users\JHB Laptop\Documents\test\Nova pasta1\Nova pasta2\Nova pasta3\Nova pasta4\Nova pasta5"
Adaptei este código do usuário:331812 Malcolm
{cd "C:\Users\MyName\Documents\MyDirectory"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "_"," " }}
e esta é a minha alteração:
cd "C:\Users\JHB Laptop\Documents\test"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "#","(hash)" }
Esta parte funciona bem, mas é claro que para na última pasta da string
E é aqui que meu conhecimento para. Vejo que -recurse desempenha um papel nas subpastas, mas não consigo descobrir onde ele se encaixa no projeto.
Ao pesquisar os comandos necessários para obter a saída correta necessária para uma resposta, passei várias horas tentando descobrir isso e não consegui determinar por que isso não está gerando a saída da maneira que deveria (ocorre em ambos PowerShell 5 e 7) .
A primeira linha retornada está fora de formato, com todas as linhas subsequentes da saída retornada sendo formatadas corretamente:
ForEach
| Get-Disk
| Get-Partition
| Get-PSDrive
|Write-Host
PS $ # Match drive serial numbers to their drive letter mountpoints:
$drive = (Get-PSDrive).Name -match '^[c-z]$'
""; Foreach ($letter in $drive) {
Write-Host $letter': ' -nonewline
Get-Partition -DriveLetter $letter | Get-Disk
}
C:
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition
Style
------ ------------- ------------- ------------ ----------------- ---------- ----------
3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
D: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
H: 1 Samsung SSD 870 EVO 4TB S*************R Healthy Online 3.64 TB GPT
M: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
P: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
V: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
Ao copiar diretamente a saída do terminal, o problema se torna mais complicado:
C:
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition
Style
------ ------------- ------------- ------------ ----------------- ---------- ----------3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
D: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
H: 1 Samsung SSD 870 EVO 4TB S*************R Healthy Online 3.64 TB GPT
M: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
P: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
V: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition
Style
------ ------------- ------------- ------------ ----------------- ---------- ----------
C: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
D: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
H: 1 Samsung SSD 870 EVO 4TB S*************R Healthy Online 3.64 TB GPT
M: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
P: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT
V: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT